首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >numpy数组与numpy列表数组

numpy数组与numpy列表数组
EN

Stack Overflow用户
提问于 2021-12-26 07:18:33
回答 1查看 65关注 0票数 0

我有两个numpy数组

代码语言:javascript
复制
arr1 = np.empty( (3,) , dtype=np.object)
arr1[0] = [1,2]
arr1[1] = [1,2,3]
arr1[2] = None
代码语言:javascript
复制
arr2 = np.empty( (3,) , dtype=np.object)
arr2[0] = np.array([1,2])
arr2[1] = np.array([1,2,3])
arr2[2] = None

为什么,当我检查内部数组/列表是否为None时,我得到的结果都是相同的

代码语言:javascript
复制
In [28]: arr1 != None
Out[28]: array([ True,  True,  False])
代码语言:javascript
复制
In [27]: arr2 != None
Out[27]: True

在numpy中检查的方法是什么,即arr2中的每个元素都是空的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-26 07:43:22

请注意,arr2 != None行在较新版本的Numpy上引发以下DeprecationWarning:

代码语言:javascript
复制
Warning (from warnings module):
  File "<pyshell#19>", line 1
DeprecationWarning: elementwise comparison failed; this will raise an error in the future.

原因是my_array != my_object为每个i调用my_array[i] != my_object,并期望在每个元素上得到一个布尔值。相反,它将返回array([ False, False])作为第一个元素(而不仅仅是布尔值)。

因此,本质上,区别在于list != None返回False,但numpy_array_of_ints != None返回数组。从元素上比较,应该只返回一组布尔人。

编辑:查看医生们,元素级比较的返回值“通常为bool类型,除非dtype=object被传递”。因此,我们可以这样做:

代码语言:javascript
复制
>>> np.not_equal(arr1, None, dtype=object)
array([True, True, False], dtype=object)
>>> np.not_equal(arr2, None, dtype=object)
array([array([ True,  True]), array([ True,  True,  True]), False],
      dtype=object)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70484816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档