2024-04-26 18:25:49 发布
网友
不管怎样,您都将不得不重新分配一块内存,因此使用arr.resize()、np.concatenate、hstack/vstack等并不重要。请注意,如果您按顺序累积大量数据,Python列表通常更有效。
arr.resize()
np.concatenate
hstack/vstack
如果要在添加的元素中使用零,my_array.resize((1600, 1000))应该可以工作。注意,这与numpy.resize(my_array, (1600, 1000))不同,前者的行是重复的,这可能不是您想要的。
my_array.resize((1600, 1000))
numpy.resize(my_array, (1600, 1000))
否则(例如,如果要避免将元素初始化为零,这可能是不必要的),您确实可以使用hstack和vstack来添加包含新元素的数组;numpy.concatenate()(请参阅pydoc numpy.concatenate)也应该可以工作(据我所知,这只是更一般的工作)。
hstack
vstack
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.]])
不管怎样,您都将不得不重新分配一块内存,因此使用
arr.resize()
、np.concatenate
、hstack/vstack
等并不重要。请注意,如果您按顺序累积大量数据,Python列表通常更有效。如果要在添加的元素中使用零,
my_array.resize((1600, 1000))
应该可以工作。注意,这与numpy.resize(my_array, (1600, 1000))
不同,前者的行是重复的,这可能不是您想要的。否则(例如,如果要避免将元素初始化为零,这可能是不必要的),您确实可以使用
hstack
和vstack
来添加包含新元素的数组;numpy.concatenate()
(请参阅pydoc numpy.concatenate)也应该可以工作(据我所知,这只是更一般的工作)。在这两种情况下,我猜都必须分配一个新的内存块来扩展数组,而且所有这些方法都需要大约相同的时间。
这应该符合您的要求(ie,使用3x3数组和4x4数组表示OP中的两个数组)
将a映射到b:
相关问题 更多 >
编程相关推荐