5

关于 numpy 中的数组,我有一个非常基本的问题,但我找不到快速的方法。我有三个具有相同尺寸的二维数组 A、B、C。我想将它们转换为一个 3D 数组 (D),其中每个元素都是一个数组

D[column][row] = [A[column][row] B[column][row] c[column][row]] 

最好的方法是什么?

4

2 回答 2

14

您可以使用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])
于 2012-09-12T20:05:31.573 回答
7

numpy.dstack沿第三轴堆叠数组,因此,如果您堆叠 3 个 shape 数组(abc(N,M),您最终将得到一个 shape 数组(N,M,3)

另一种方法是直接使用:

np.array([a, b, c])

这给了你一个(3,N,M)数组。

两者有什么区别?内存布局。您将访问您的第一个a数组

np.dstack([a,b,c])[...,0]

或者

np.array([a,b,c])[0]
于 2012-09-13T08:28:11.617 回答