In [102]: bool([])
Out[102]: False
In [103]: bool([1])
Out[103]: True
字符串 但是尝试对数组做同样的事情会产生(在1.18版中):
In [104]: bool(np.array([]))
/usr/local/bin/ipython3:1: DeprecationWarning: The truth value
of an empty array is ambiguous. Returning False, but in
future this will result in an error. Use `array.size > 0` to
check that an array is not empty.
#!/usr/bin/python3
Out[104]: False
In [105]: bool(np.array([1]))
Out[105]: True
型 并且bool(np.array([1,2])产生臭名昭著的模糊性误差。
编辑
最常见的答案是size:
In [11]: x = np.array([])
In [12]: x.size
Out[12]: 0
型 但是我(和大多数其他人)检查shape比size更多:
In [13]: x.shape
Out[13]: (0,)
型 另一个对它有利的事情是它“Map”到empty列表:
In [14]: x.tolist()
Out[14]: []
型 但是还有其他的0 size的数组,它们在最后一种意义上不是“空”的:
In [15]: x = np.array([[]])
In [16]: x.size
Out[16]: 0
In [17]: x.shape
Out[17]: (1, 0)
In [18]: x.tolist()
Out[18]: [[]]
In [19]: bool(x.tolist())
Out[19]: True
4条答案
按热度按时间hm2xizp91#
你可以随时查看
.size
属性。它是defined as an integer,当数组中没有元素时为零(0
):字符串
e0bqpujr2#
https://numpy.org/devdocs/user/quickstart.html (2020.04.08)
NumPy的主要对象是齐次多维数组。它是一个元素(通常是数字)的表,所有元素都是相同类型的,由非负整数的元组索引。在NumPy中,维度称为轴。(...)NumPy的数组类称为ndarray。(...)ndarray对象的更重要的属性是:
ndarray.ndim
数组的轴数(维度)。
ndarray.shape
数组的维度。这是一个整数元组,表示数组在每个维度上的大小。对于一个n行m列的矩阵,shape将是(n,m)。因此,shape元组的长度是轴的数量ndim。
ndarray.size数组的元素总数。这等于shape的元素的乘积。
wkyowqbh3#
但需要注意的是,
np.array(None).size
返回1
!这是因为a.size
is equivalent tonp.prod(a.shape)
,np.array(None).shape
是()
,而空积是1
。字符串
因此,我使用以下代码来测试NumPy数组是否有元素:
型
huwehgph4#
为什么我们要检查数组是否为
empty
?数组不会像列表那样增长或收缩。从一个“空”数组开始,然后以np.append
增长是一个常见的新手错误。在
if alist:
中使用列表取决于它的布尔值:字符串
但是尝试对数组做同样的事情会产生(在1.18版中):
型
并且
bool(np.array([1,2])
产生臭名昭著的模糊性误差。编辑
最常见的答案是
size
:型
但是我(和大多数其他人)检查
shape
比size
更多:型
另一个对它有利的事情是它“Map”到
empty
列表:型
但是还有其他的0
size
的数组,它们在最后一种意义上不是“空”的:型
np.array([[],[]])
的大小也是0,但形状是(2,0),而len
是2。虽然
empty
列表的概念定义很好,但empty array
并没有定义好。一个空列表等于另一个。对于size 0
数组来说,情况并非如此。答案取决于