2016-06-21 84 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

哇。新的语法对我来说,它的作品。谢谢。 –