扩展numpy ndarray的好方法?
有没有好的方法来“扩展”一个numpy ndarray?说我有一个ndarray这样的:
[[1 2] [3 4]]
我希望每一行通过填充零来包含更多元素:
[[1 2 0 0 0] [3 4 0 0 0]]
我知道必须有一些蛮力的方法(比如用零构造一个更大的数组,然后从旧的较小的数组中复制元素),只是想知道是否有Python的方法。尝试过numpy.reshape
但没用:
import numpy as npa = np.array([[1, 2], [3, 4]])
np.reshape(a, (2, 5))
Numpy抱怨: ValueError: total size of new array must be unchanged
回答:
有索引技巧r_
和c_
。
>>> import numpy as np>>> a = np.array([[1, 2], [3, 4]])
>>> z = np.zeros((2, 3), dtype=a.dtype)
>>> np.c_[a, z]
array([[1, 2, 0, 0, 0],
[3, 4, 0, 0, 0]])
如果这是对性能至关重要的代码,则您可能更喜欢使用等效方法np.concatenate
而不是索引技巧。
>>> np.concatenate((a,z), axis=1)array([[1, 2, 0, 0, 0],
[3, 4, 0, 0, 0]])
也有np.resize
和np.ndarray.resize
,但是它们有一些限制(由于numpy在内存中布置数据的方式),因此请读取那些上的文档字符串。您可能会发现,简单地串联会更好。
顺便说一句,当我需要执行此操作时,我通常只是按照您已经提到的基本方法进行操作(创建零数组并在其中分配较小的数组),我看不出有什么问题!
以上是 扩展numpy ndarray的好方法? 的全部内容, 来源链接: utcz.com/qa/412318.html