簡體   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