Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 巨蟒:“;使用a.any()或a.all();在穿越一个小村庄的时候_Python_Numpy_For Loop_Ambiguity - Fatal编程技术网

Python 巨蟒:“;使用a.any()或a.all();在穿越一个小村庄的时候

Python 巨蟒:“;使用a.any()或a.all();在穿越一个小村庄的时候,python,numpy,for-loop,ambiguity,Python,Numpy,For Loop,Ambiguity,在像这样的numpy.ndarray中: myarray= array([[ 0.47174344, 0.45314669, 0.46395022, 0.47440382, 0.50709627, 0.53350065, 0.5233444 , 0.49974663, 0.48721607, 0.46239652, 0.4693633 , 0.47263569, 0.47591957, 0.436558 , 0.43335574,

在像这样的
numpy.ndarray
中:

myarray=
array([[ 0.47174344,  0.45314669,  0.46395022,  0.47440382,  0.50709627,
         0.53350065,  0.5233444 ,  0.49974663,  0.48721607,  0.46239652,
         0.4693633 ,  0.47263569,  0.47591957,  0.436558  ,  0.43335574,
         0.44053621,  0.42814804,  0.43201894,  0.43973886,  0.44125302,
         0.41176999],
       [ 0.46509004,  0.46221505,  0.48824086,  0.50088744,  0.53040384,
         0.53592231,  0.49710228,  0.49821022,  0.47720381,  0.49096272,
         0.50438366,  0.47173162,  0.48813669,  0.45032002,  0.44776794,
         0.43910269,  0.43326132,  0.42064458,  0.43472954,  0.45577299,
         0.43604956]])
我想计算超过给定值的单元格数量,比如说
0.5
,并将不超过该值的单元格设置为
0.0
。我就是这么做的:

count=0 
value=0.5
for i in range(myarray.shape[0]):
   for j in range(myarray.shape[1]):
       if myarray[i][j]<value:
          myarray[i][j]=0 
       elif myarray[i][j]>=value:     
          count=count+1 
percentage=round(100*count/(myarray.shape[0]*myarray.shape[1]),2)
count=0
值=0.5
对于范围内的i(myarray.shape[0]):
对于范围内的j(myarray.shape[1]):
如果myarray[i][j]=值:
计数=计数+1
百分比=整数(100*count/(myarray.shape[0]*myarray.shape[1]),2)

但是,我得到了这个错误:
ValueError:包含多个元素的数组的真值是不明确的。使用a.any()或a.all()
,指向我检查
的行,如果myarray[I][j]正常情况下,您可以比较两个数字以获得真值。例如:

elem = 5
if elem < 6:
    # do something
elem = [5,7]
if elem < 6:
    # this doesn't make sense
elem = np.array([5,7])
if np.any(elem<6):
    # this is true, because 5 < 6
if np.all(elem<6):
    # this isn't true, because 7 > 6
但是,不能将数组与值进行比较。例如:

elem = 5
if elem < 6:
    # do something
elem = [5,7]
if elem < 6:
    # this doesn't make sense
elem = np.array([5,7])
if np.any(elem<6):
    # this is true, because 5 < 6
if np.all(elem<6):
    # this isn't true, because 7 > 6

是的,我认为你的numpy.array有一个额外的括号,或者它包含了另一个数组

已尝试手动将数组设置为

myarray=np.array([[ 0.47174344,  0.45314669,  0.46395022,  0.47440382,  0.50709627,0.53350065,  0.5233444 ,  0.49974663,  0.48721607,  0.46239652, 0.4693633 ,  0.47263569,  0.47591957,  0.436558  ,  0.43335574,0.44053621,  0.42814804,  0.43201894,  0.43973886, 0.44125302, 0.41176999],[ 0.46509004,  0.46221505,  0.48824086,  0.50088744,  0.53040384,0.53592231,  0.49710228,  0.49821022,  0.47720381,  0.49096272,0.50438366,  0.47173162,  0.48813669,  0.45032002,  0.44776794,0.43910269,  0.43326132,  0.42064458,  0.43472954,  0.45577299,0.43604956]])
而且代码是有效的

但背景:

myarray=np.array([[[ 0.47174344,  0.45314669,  0.46395022,  0.47440382,  0.50709627,0.53350065,  0.5233444 ,  0.49974663,  0.48721607,  0.46239652, 0.4693633 ,  0.47263569,  0.47591957,  0.436558  ,  0.43335574,0.44053621,  0.42814804,  0.43201894,  0.43973886, 0.44125302, 0.41176999],[ 0.46509004,  0.46221505,  0.48824086,  0.50088744,  0.53040384,0.53592231,  0.49710228,  0.49821022,  0.47720381,  0.49096272,0.50438366,  0.47173162,  0.48813669,  0.45032002,  0.44776794,0.43910269,  0.43326132,  0.42064458,  0.43472954,  0.45577299,0.43604956]]])

产生了类似的错误

无论您可以简单地执行以下操作:

myarray[myarray<value]=0
np.count_nonzero(myarray)

myarray[myarraySounds就像你的数组不是你想象的那样。我可以运行上面的代码片段,没有任何错误。与你的脚本相同。百分比值为16。