在numpy中将3个阵列组合在一个3D阵列中

ger*_*mpo 4 python arrays 3d numpy

我对numpy中的数组有一个非常基本的问题,但我找不到快速的方法来做到这一点.我有三个具有相同尺寸的2D阵列A,B,C.我想在一个3D数组(D)中转换它们,其中每个元素都是一个数组

D[column][row] = [A[column][row] B[column][row] c[column][row]] 
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

DSM*_*DSM 13

你可以使用numpy.dstack:

>>> import numpy as np
>>> a = np.random.random((11, 13))
>>> b = np.random.random((11, 13))
>>> c = np.random.random((11, 13))
>>> 
>>> d = np.dstack([a,b,c])
>>> 
>>> d.shape
(11, 13, 3)
>>> 
>>> a[1,5], b[1,5], c[1,5]
(0.92522736614222956, 0.64294050918477097, 0.28230222357027068)
>>> d[1,5]
array([ 0.92522737,  0.64294051,  0.28230222])
Run Code Online (Sandbox Code Playgroud)


Pie*_* GM 5

numpy.dstack堆叠沿第三轴线的阵列,因此,如果叠加3门阵列(a,b,c形状的)(N,M),你会具有形状的阵列结束(N,M,3).

另一种方法是直接使用:

np.array([a, b, c])
Run Code Online (Sandbox Code Playgroud)

那给你一个(3,N,M)数组.

这两者有什么区别?内存布局.您可以访问你的第一个阵列a作为

np.dstack([a,b,c])[...,0]
Run Code Online (Sandbox Code Playgroud)

要么

np.array([a,b,c])[0]
Run Code Online (Sandbox Code Playgroud)