【问题标题】:Convert Single Element of Numpy Array into Another Type将 Numpy 数组的单个元素转换为另一种类型
【发布时间】:2018-02-27 15:44:52
【问题描述】:

我有一个数据类型为 float64 的 Numpy 数组。例如: [1.35623 , 2.35124 , 5.12276, 0.12466]。如何更改此数组的单个元素的数据类型。我试过使用astype(),但它似乎返回一个标量数字而不是一个numpy数组。如何在 Python 3.x 中做到这一点?

【问题讨论】:

  • 在 numpy 中是不可能的。 Numpy 只允许单一类型的所有元素。
  • 请更好地描述您想要实现的目标。 NumPy 数组只能保存单一数据类型的元素。展示你尝试过的、得到的和想要得到的。

标签: python arrays python-3.x numpy


【解决方案1】:

您只能通过创建object 数组来获得近似值,类似于保存对异构类型对象的引用的 C 指针数组。它不会改变数组本身包含相同类型元素的事实。

但是,这并不是特别有效,而且与最初使用numpy.ndarrays 的目标背道而驰。

如果您愿意,您仍然可以执行以下操作:

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 的重载运算符和ufuncs)将不会受益于保存数字类型对象的连续数组的locality。实际的数字对象可能稀疏地位于内存中,导致访问和计算效率低下。此外,一些ufuncs 可能会直接中断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2012-03-28
    • 2011-03-05
    • 2020-12-02
    • 1970-01-01
    • 2015-06-22
    相关资源
    最近更新 更多