如何向NUMPY数组添加行和列?

2024-04-26 18:25:49 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

不管怎样,您都将不得不重新分配一块内存,因此使用arr.resize()np.concatenatehstack/vstack等并不重要。请注意,如果您按顺序累积大量数据,Python列表通常更有效。

如果要在添加的元素中使用零,my_array.resize((1600, 1000))应该可以工作。注意,这与numpy.resize(my_array, (1600, 1000))不同,前者的行是重复的,这可能不是您想要的。

否则(例如,如果要避免将元素初始化为零,这可能是不必要的),您确实可以使用hstackvstack来添加包含新元素的数组;numpy.concatenate()(请参阅pydoc numpy.concatenate)也应该可以工作(据我所知,这只是更一般的工作)。

在这两种情况下,我猜都必须分配一个新的内存块来扩展数组,而且所有这些方法都需要大约相同的时间。

这应该符合您的要求(ie,使用3x3数组和4x4数组表示OP中的两个数组)

>>> import numpy as NP
>>> a = NP.random.randint(0, 10, 9).reshape(3, 3)
>>> a
>>> array([[1, 2, 2],
           [7, 0, 7],
           [0, 3, 0]])

>>> b = NP.zeros((4, 4))

将a映射到b:

>>> b[:3,:3] = a

>>> b
    array([[ 1.,  2.,  2.,  0.],
           [ 7.,  0.,  7.,  0.],
           [ 0.,  3.,  0.,  0.],
           [ 0.,  0.,  0.,  0.]])

相关问题 更多 >