我正在尝试执行此人正在做的事情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)
答案 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