2015-04-28 26 views
2

我只是碰到了以下問題來了我真不明白:使用索引多個布爾數組和分配

import numpy as np 
a = np.arange(10) 
m = a < 5 
n = a[m] < 2 

print a[m][n] 
# array([0, 1]) 

到目前爲止好。問題來了:

a[m][n] *= 10000 
print a[m][n] 
# array([0, 1]) 

我不明白爲什麼賦值a [m] [n] * = 10000不起作用。我知道它確實有效,如果我只使用一個陣列進行索引:

a[m] *= 10000 
print a[m] 
# array([ 0, 10000, 20000, 30000, 40000]) 

任何幫助,將不勝感激。謝謝!

回答

0

命令:

a[m] *= 1000 

做一個in-place assignment,而:

a[m][n] *= 1000 

首先創建一個新的陣列a[m],做就地分配爲新的副本,這就是爲什麼原始數組未被修改。

+0

好的,謝謝! :) – Joerg

相關問題