5

numpyの配列に関して非常に基本的な質問がありますが、それを行うための高速な方法を見つけることができません。同じ寸法の3つの2D配列A、B、Cがあります。これらを1つの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番目の軸に沿って配列をスタックするため、形状の3つの配列(、、)aをスタックするとb、形状の配列になります。c(N,M)(N,M,3)

別の方法は、直接使用することです。

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

それはあなたに(3,N,M)配列を与えます。

2つの違いは何ですか?メモリレイアウト。a最初のアレイに次のようにアクセスします

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

また

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