当前位置: 首页 > 面试题库 >

NumPy数组的就地类型转换

高宏峻
2023-03-14
问题内容

给定一个NumPy数组int32,如何将其转换为float32 原位 ?所以基本上,我想做

a = a.astype(numpy.float32)

而不复制阵列。好大

这样做的原因是我有两种算法来计算a。其中一个返回一个数组int32,另一个返回一个数组float32(这是两种不同算法所固有的)。所有进一步的计算都假定a是的数组float32

目前,我在通过调用的C函数中进行了转换ctypes。有没有办法在Python中做到这一点?


问题答案:

您可以使用其他dtype创建视图,然后就地复制到视图中:

import numpy as np
x = np.arange(10, dtype='int32')
y = x.view('float32')
y[:] = x

print(y)

产量

array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.], dtype=float32)

要显示转换是否就位,请注意 复制x到已y更改x

print(x)

版画

array([         0, 1065353216, 1073741824, 1077936128, 1082130432,
       1084227584, 1086324736, 1088421888, 1090519040, 1091567616])


 类似资料:
  • 问题内容: 目前,我有一些这样的代码 我认为此代码 效率不高, 因为需要返回数组的副本而不是 就地修改ret 我想知道是否可以将numpy数组用于以下代码: 这样,效率会更高。有人对此有想法吗?谢谢! 问题答案: 想象一个numpy数组占据一个连续的内存块。现在想象一下其他对象,例如其他numpy数组,它们正占据着numpy数组左右两侧的内存。没有空间可以追加或扩展我们的numpy数组。numpy

  • 问题内容: 我正在尝试创建具有混合数据类型(字符串,整数,整数)的NumPy数组/矩阵(Nx3)。但是,当我通过添加一些数据来添加此矩阵时,出现错误: TypeError:无效的类型提升 。拜托,有人可以帮我解决这个问题吗? 当我用示例数据创建一个数组时,NumPy将矩阵中的所有列都转换为一种“ S”数据类型。而且我无法为数组指定数据类型,因为当我执行此操作时, res = np.array([“

  • 本文向大家介绍更改给定numpy数组的数据类型,包括了更改给定numpy数组的数据类型的使用技巧和注意事项,需要的朋友参考一下 除了python的本机数据类型外,Numpy数组还支持多种数据类型。创建数组后,我们仍然可以根据需要修改数组中元素的数据类型。用于此目的的两种方法是array.dtype和array.astype array.dtype 此方法为我们提供了数组中元素的现有数据类型。在下面

  • 问题内容: 我正在创建一个numpy数组,该数组将填充我制作的特定类的对象。我想初始化数组,使其仅包含该类的对象。例如,这是我想做的事,如果我做这件事会发生什么。 我可以做这个: 然后将的每个元素分配为一个对象(或任何其他类型的对象)。从编程的角度(类型检查)和数学的角度(对函数集进行操作)的角度来看,如果我能够拥有一个s数组,那将是如此的巧妙。 我可以使用任意类指定numpy数组的数据类型吗?

  • 问题内容: 我有从熊猫生成的以下形式的字典列表。我想将其转换为json格式。 但是,json.dumps会引发错误:TypeError:685不可序列化JSON 我猜这是从numpy到python(?)的类型转换问题。 但是,当我使用np.int32(v)转换数组中每个字典的值v时,仍会引发错误。 编辑:这是完整的代码 问题答案: 看来您是正确的: 这里的可惜的是,numpy的数字不给你什么任何暗

  • 主要内容:数据类型对象,数据类型标识码,定义结构化数据NumPy 作为 Python 的扩展包,它提供了比 Python 更加丰富的数据类型,如表 1 所示: 表1:NumPy数据类型 序号 数据类型 语言描述 1 bool_ 布尔型数据类型(True 或者 False) 2 int_ 默认整数类型,类似于 C 语言中的 long,取值为 int32 或 int64 3 intc 和 C 语言的 int 类型一样,一般是 int32 或 int 64