Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 NumPy中的链式比较? >k 数组([[0.58789735,0.29830086], [0.09397728, 0.60737265]]) >>>k[k>>k[k>0.5]=1 >>>k 数组([[1,0.29830086], [1. , 1. ]])_Python_Arrays_Numpy - Fatal编程技术网

Python NumPy中的链式比较? >k 数组([[0.58789735,0.29830086], [0.09397728, 0.60737265]]) >>>k[k>>k[k>0.5]=1 >>>k 数组([[1,0.29830086], [1. , 1. ]])

Python NumPy中的链式比较? >k 数组([[0.58789735,0.29830086], [0.09397728, 0.60737265]]) >>>k[k>>k[k>0.5]=1 >>>k 数组([[1,0.29830086], [1. , 1. ]]),python,arrays,numpy,Python,Arrays,Numpy,是否可以将k[0.1>k>0.5]=1组合起来,当我尝试这样做时,我会得到以下错误 >>> k array([[0.58789735, 0.29830086], [0.09397728, 0.60737265]]) >>> k[k<0.1] = 1 >>> k[k>0.5] = 1 >>> k array([[1. , 0.29830086], [1. ,

是否可以将k[0.1>k>0.5]=1组合起来,当我尝试这样做时,我会得到以下错误

>>> k
array([[0.58789735, 0.29830086],
       [0.09397728, 0.60737265]])
>>> k[k<0.1] = 1
>>> k[k>0.5] = 1
>>> k
array([[1.        , 0.29830086],
       [1.        , 1.        ]])
>>k[0.1>k>0.5]=1
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:包含多个元素的数组的真值不明确。请使用a.any()或a.all()

我在这里的选项是什么?我尝试了.any和.all,但它没有我在这里尝试的那样优雅。

在numpy中不允许链式比较。您需要将这些条件与链式比较链接,然后执行。在这种情况下,当满足任一条件时,您希望将值设置为
1
,因此需要按位OR(
):

ValueError:包含多个元素的数组的真值不明确。 使用a.any()或a.all()

这里的问题是python在内部将上述功能扩展为:

0.1>k>0.5
这就是导致错误的原因,因为
隐式调用
bool
NumPy
只允许对单个元素(不是
大小>1的数组)隐式强制布尔值,因为具有许多值的布尔数组既不计算为
True
也不计算为
False
。正是由于这种模糊性,这是不允许的,在布尔上下文中计算数组总是会产生
ValueError
运行
np.where(np.logical_或(k<0.1,0.5

结果是:

0.1>k and k>0.5
0.1>k>0.5
0.1>k and k>0.5
array([[1.        , 0.29830086],
       [1.        , 1.        ]])