ndarray.any() 错误:值错误:'axis'条目超出范围



我遇到了以下问题:

运行此代码

 a = np.array([1,2,3])
 a.any(2)

给我错误:ValueError: 'axis' entry is out of bounds

看起来方法any()接收到的axis参数太大。当我尝试指定axis参数时,我收到的是:

a.any(2, axis=1)
--->
TypeError: _any() got multiple values for argument 'axis'

就像axis参数设置了两次一样。

我使用的是Pyzo2014a版本3.5与Python 3.4.3和numpy 1.10.1

a.any()测试沿给定轴的任何数组元素是否计算为True。要测试2是否在a中,可以使用

np.any(a==2)

(a==2).any()

或者只是

2 in a
 a = np.array([1,2,3])
 a.any(2)
ValueError: 'axis' entry is out of bounds

你得到这个错误是因为你只有一个axis,也就是0,你没有一个值为的轴

第二个错误

a.any(2, axis=1)
--->
TypeError: _any() got multiple values for argument 'axis'

因为axis是方法any的第一个argument,所以这里您提供2作为axis,并且再次将1分配给axis参数

您将一个错误的轴传递给any。请注意,any的第一个参数是数组的一个轴,由于a是一维数组,因此您可以将0作为其轴传递:

>>> a.any(0)
True

numpy.any(a,axis=无,out=无,keepdims=假)[source]

如果你想要一个2D阵列,你可以通过01:

>>> a = np.array([[1,2,3],[0,0,0]])
>>> a.any(0)
array([ True,  True,  True], dtype=bool)
>>> a.any(1)
array([ True, False], dtype=bool)

我想你想要:

(a == 2).any()

any的方法签名状态为:

a:array_like可以转换为大堆

axis:无或int或int元组,可选一个或多个轴沿其执行逻辑OR归约。默认值(轴=None)是对输入的所有维度执行逻辑OR大堆轴可能是负数,在这种情况下,它从最后一个计数到第一轴。1.7.0版本中的新增功能。如果这是一个int元组减少是在多个轴上执行的,而不是单个轴或所有的轴都和以前一样。

out:ndarray,可选备用输出阵列将结果放入其中。它必须与保留预期输出及其类型(例如,如果是类型float,则它将保持不变,返回1.0表示True,返回0.0表示无论a)的类型如何,都为False。参见doc.ufuncs("输出"一节arguments")获取详细信息。

keepdims:bool,可选如果设置为的确,减少的轴在结果中保留为尺寸尺寸为一号。使用此选项,结果将正确广播对照原始arr.

因此,您将axis参数与您试图测试的值混淆,从而产生错误:

In [208]:
a = np.array([1,2,3])
(a==2).any()
Out[208]:
True

最新更新