【发布时间】:2011-12-13 17:19:52
【问题描述】:
在 Numpy 中,我可以使用 np.append 或 np.concatenate 端到端连接两个数组:
>>> X = np.array([[1,2,3]])
>>> Y = np.array([[-1,-2,-3],[4,5,6]])
>>> Z = np.append(X, Y, axis=0)
>>> Z
array([[ 1, 2, 3],
[-1, -2, -3],
[ 4, 5, 6]])
但是这些会复制他们的输入数组:
>>> Z[0,:] = 0
>>> Z
array([[ 0, 0, 0],
[-1, -2, -3],
[ 4, 5, 6]])
>>> X
array([[1, 2, 3]])
有没有办法将两个数组连接成一个视图,即不复制?这需要np.ndarray 子类吗?
【问题讨论】:
-
为什么要查看而不是副本?
-
@WinstonEwert:我有一长串数组,我想在这些数组上执行单一的全局规范化。
-
列表理解也会很快。
-
这并不能回答问题,复制所有这些数组有什么问题?基本上,你是担心复制的成本,还是想修改原始数组?
-
@WinstonEwert:复制的成本是问题;否则我可以
concatenate他们并将原始数组替换为连接中的视图。不过,看起来这就是我必须做的。
标签: python multidimensional-array numpy