假设我有一个包含x、y和z值的一维数组,如下所示:
x y z arr_1D
0 0 0 0
1 0 0 1
0 1 0 2
1 1 0 3
0 2 0 4
1 2 0 5
0 0 1 6
...
0 2 3 22
1 2 3 23
我希望将
arr_1D
转换为一个3D数组arr_3D
, 形状为(nx,ny,nz)
(在这个例子中为(2,3,4)
)。我希望可以通过arr_3D[x_index, y_index, z_index]
访问值,例如:arr_3D[1,2,0]=5
。使用numpy.reshape(arr_1D, (2,3,4))
可以给我正确尺寸的3D矩阵,但不是我想要的顺序。虽然我知道可以使用以下代码,但我想知道是否有一种方法可以避免笨重的嵌套循环。arr_1d = np.arange(24)
nx = 2
ny = 3
nz = 4
arr_3d = np.empty((nx,ny,nz))
count = 0
for k in range(nz):
for j in range(ny):
for i in range(nx):
arr_3d[i,j,k] = arr_1d[count]
count += 1
print arr_3d[1,2,0]
output: 5
最符合Python风格或者速度最快的方法是什么?我通常希望在长度为100,000左右的数组上执行此操作。