gpt4 book ai didi

Python:遍历 numpy.ndarray 时为 "Use a.any() or a.all()"

转载 作者:行者123 更新时间:2023-11-28 20:39:16 24 4
gpt4 key购买 nike

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)

但是,我收到此错误:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() , 指向我检查 if myarray[i][j]<value 的行.

为什么会发生这种情况以及如何解决?什么是真值?

最佳答案

通常,您可以比较两个数字以获得真值。例如:

elem = 5
if elem < 6:
# do something

相当于:

if true:
# 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

我运行了上面的示例代码,没有发现任何错误,所以我不确定问题出在哪里。但这是你应该注意的。考虑打印您正在比较的元素以查看它是否是一个数组。


另外,这是做您想做的事的一种较短的方法:

myarray = np.array( putarrayhere )
count = sum(myarray >= value)

关于Python:遍历 numpy.ndarray 时为 "Use a.any() or a.all()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38777890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com