1
我有一個〜286 x 181 x 360的numpy數組(我們稱之爲測試),需要從中提取一個3-D數組。三維所需的範圍被定義爲其他numpy數組(a_dim,b_dim和c_dim)(最終基於用戶輸入)。天真地,我希望我能夠做一些像big_array [a_dim,b_dim,c_dim]的東西。那高興地跑時b_dim和c_dim只包含一個值(這發生在我的主要測試情況發生),但是當他們大於1用數組切片多維numpy陣列
Traceback (most recent call last):
File "<pyshell#541>", line 1, in <module>
test[a_dim,b_dim,c_dim]
ValueError: shape mismatch: objects cannot be broadcast to a single shape
爲了簡化,考慮到不工作以下4個數組:
test=arange(125).reshape((5,5,5))
a_dim=[0,1]
b_dim=[1,2]
c_dim=[2,3]
我想獲得如從以上的組合輸出是:
array([[[ 7, 8],
[12, 13]],
[[32, 33],
[37, 38]]])
或者,包含所有的行,列和頻帶的3D陣列(或任何y你想調用第三維),它們在a_dim,b_dim和c_dim中定義。我一直在使用ix_這種嘗試,但我清楚地失蹤我見過的例子東西:
>>> test[ix_((a_dim,b_dim,c_dim))]
Traceback (most recent call last):
File "<pyshell#517>", line 1, in <module>
test[ix_((a_dim,b_dim,c_dim))]
File "C:\Python27\lib\site-packages\numpy\lib\index_tricks.py", line 73, in ix_
raise ValueError, "Cross index must be 1 dimensional"
ValueError: Cross index must be 1 dimensional
有什麼建議? 謝謝!
AHA!謝謝。我很感激你發現 - 這讓我很瘋狂。 – 2012-01-27 00:09:50