以下是
numPy
中的一个现实世界问题,已简化为基本要素,只是尺寸较小。
假设我想创建一个维度为 (10, 10, 100) 的 n 维数组
all
:
all = np.empty((10, 10, 100))
我还有一个一维数组
data
,这里模拟为
data = np.arange(0, 100)
对于所有 i, j 我现在想要实现这一目标
all[i,j]=data
所以我这样做:
all[:, :]=data
当然有效。
但现在我想将
data
导入到形状为 (100, 10, 10) 的 all2
。我可以用做到这一点
all2 = np.empty((100, 10, 10)) # new target to be populated
for i in range(100):
for j in range(10):
for k in range(10):
all2[i, j, k]=data[i]
但是有没有一种更简单的方法可以在不循环的情况下做到这一点?如果不能做得更优雅,我会感到惊讶,但我不知道如何做到。
您可以使用转置:
all2.T[:,:] = data