【问题标题】:In-place type conversion of a Numpy array again?再次对 Numpy 数组进行就地类型转换?
【发布时间】:2014-02-24 14:04:46
【问题描述】:

我有一个 floats 数组,我想将其转换为 int

a1 = np.ones(10)
a2 = a1.astype(int, copy=False)
a2.dtype # int
a1.dtype # float

这里发生了什么?我以为astype(int, copy=False) 会就地转换类型。但它似乎没有这样做?

相关问题:In-place type conversion of a NumPy array

【问题讨论】:

标签: python numpy


【解决方案1】:

来自copy argument documentation

如果设置为 false,以及 dtype、order 和 subok 要求 满足,则返回输入数组而不是副本。

它实际上不能就地转换类型。它仅在输入数组已经是您想要的 dtype 时才有效;否则,无论如何它都必须制作副本。

【讨论】:

  • 我认为这似乎是正确的,但是astype 可以改变什么,如果不是dtype
  • @wim:只有当原始数组看起来完全符合您的要求时,它才能避免创建新数组。在创建新数组时,它可以更改 dtype、内存顺序和特定的数组子类。
  • 如果您有一个未知类型的数组对象并且您必须将其转换为特定对象,这只是一种避免不必要复制的方法。这可能不是使用 Python 中的 numpy 经常需要的,无论类型如何,您都可以获得相同的操作,但在 numpy 的 C 内部,您会看到它一直都在完成。
猜你喜欢
  • 2011-05-22
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
相关资源
最近更新 更多