2012-09-05 161 views
3

多個元素如何選擇從蟒蛇陣列多個元素?我知道這在numpy數組中是可能的,但在這種情況下我不能使用numpy數組。我要選擇類似屏蔽數組使用數組的某些元素,但我得到了蟒蛇以下錯誤選擇從蟒蛇陣列

nonzero = numpyarray.nonzero() 
pythonarray[nonzero] = numpyarray[nonzero] 
*** TypeError: only integer arrays with one element can be converted to an index 

numpyarray[nonzero]工作正常,但我不能訪問pythonarray[nonzero]。有沒有辦法在Python數組中做到這一點?

回答

1

只需使用一個循環:

for idx in nonzero: 
    pythonarray[idx] = numpyarray[idx] 

numpy的陣列可能支持n元索引來最大限度地提高性能; Python列表並沒有經過優化,所以你必須使用更簡單的方法。

+0

謝謝。我想這會使表演減慢很多。我必須這樣做100萬次。哦順便說一句,它應該是'idx'在賦值表達式,而不是'nonzero' – Alok

+0

@Alok:你真的有使用Python的陣列?也許你的問題可以用更有效的結構來解決? – EOL

+0

@EOL你能建議嗎?我使用數組的原因是因爲我在閱讀包含大約一百萬行或更多行的文本文件後構建了一個數組。在讀完每一行後,我必須添加30個元素來擴展數組。動態擴展數組在numpy數組中效率不高,因此我使用了python數組。相反,我可以爲numpy數組分配特定的存儲空間,並在其填充時重新分配空間,但沒有適用的存儲空間可用。 – Alok