我有一个数据类型为float64的Numpy数组。例如:
[1.35623 , 2.35124 , 5.12276, 0.12466]
。如何更改此数组的单个元素的数据类型。我尝试过使用astype()
,但它似乎返回一个标量数而不是一个numpy数组。我怎么能在Python 3.x中这样做?
答案 0 :(得分:0)
您只能通过创建object
数组来获得此近似值,类似于保存对异构类型对象的引用的C指针数组。它不会改变数组本身包含相同类型元素的事实。
然而,这并不是特别有效,而且与首先使用numpy.ndarray
的目标相反。
如果您愿意,您仍然可以这样做:
In [1]: import numpy
In [2]: a = numpy.array([1.35623 , 2.35124 , 5.12276, 0.12466])
In [3]: a.dtype
Out[3]: dtype('float64')
In [4]: b = numpy.array(a, dtype=object)
In [5]: b
Out[5]: array([1.35623, 2.35124, 5.12276, 0.12466], dtype=object)
In [6]: b[0] = 1.0j
In [7]: b
Out[7]: array([1j, 2.35124, 5.12276, 0.12466], dtype=object)
然而,矢量化式计算(例如使用numpy
的重载运算符和ufunc
s)将无法从保存数值类型对象的locality连续数组中受益。实际的数字对象可能稀疏地位于内存中,使得访问和计算效率低下。此外,一些ufunc
可能会破坏。