繁体   English   中英

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

[英]Combining 3 arrays in one 3D array in numpy

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

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

最好的方法是什么?

你可以使用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])

numpy.dstack沿第三轴堆叠数组,所以,如果你堆叠3个形状( abc )的形状(N,M) ,你最终会得到一个形状数组(N,M,3)

另一种方法是直接使用:

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

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

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

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

要么

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM