numpy沿着新维度连接

时间:2019-07-03 21:07:41

标签: numpy-ndarray

我正在尝试执行此人正在做的事情numpy: extending arrays along a new axis?,但我不想在新维度中重复相同的数组。我正在生成一个新的2D数组,并希望将其沿第3维添加

我尝试使用np.stack((a,b),axis = 2),但是数组必须具有相同的形状。因此,在堆叠前两个数组之后,第二次迭代的形状分别为(256,256,2)和(256,256),我得到ValueError:所有输入数组必须具有相同的形状

a = something #a has shape (256, 256)
for i in np.arange(0,10):
    #calculate b and it also has shape (256,256)
    a = np.stack((a,b), axis=2)
print(a.shape) #should give (256, 256, 10)

2 个答案:

答案 0 :(得分:0)

您要串联数组,但要沿着新的第三维。为了使数组尺寸一致,可以在对它们建立索引时使用None。按照上面的示例,它看起来像:

MyMacro

答案 1 :(得分:0)

您也可以通过将数组存储在列表中并使用 np.stack 来实现。也许效率不高,但我觉得它更容易阅读。

import numpy as np

a = np.random.rand(256, 256)  # array with shape (256, 256)

c = [a] # put initial array into a list
for i in np.arange(10):
    b = np.random.rand(256, 256)  # b is also array with shape (256, 256)
    c.append(b) # append each new array to the list

# convert the list of arrays to 3D array
final = np.stack(c, axis=2)  # axis argument specifies which axis to stack along