2016-06-21 72 views
1

我有這樣的簡化的方案在陣列替換值,其滿足以下條件:在陣列替換值與條件

formula1=2*2 
formula2=5*2 
formula3=4*4 

array = np.random.rand(2,4,10) 
for n,i in enumerate(array): 
    if i>0.5: #find value in array with this condition 
     formula = formula1 
     array[n] = array[n]*formula #replace the found value with this value 
    elif i <0.1: 
     formula = formula2 
     array[n] = array[n]*formula 
    else: 
     formula = formula3 
     array[n] = array[n]*formula 
print array  

它導致錯誤消息:「數組的真值與多於一個的元素是曖昧。使用a.any()或a.all()'。任何建議?

+0

你能添加完整回溯? – syntonym

+0

@syntonym if i <0.5: ValueError:具有多個元素的數組的真值是不明確的。使用a.any()或a.all() –

+0

在for循環中,'i'是一個數組。你如何確定一個數組是否小於給定值? any()檢查數組中的任何元素是否小於給定值,all()會檢查所有元素是否爲 – SvbZ3r0

回答

3

要列舉一個數組,你可以使用np.ndenumeratedocumentation here):

for n, i in np.ndenumerate(array): 
    ... 
+0

哇。新的語法對我來說,它的作品。謝謝。 –