我遇到了以下问题:
运行此代码
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阵列,你可以通过0
和1
:
>>> 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