如何解决nonzeroa,wherea和argwherea之间的差异什么时候使用?
nonzero
和argwhere
两个就给大家介绍其中数组中的元素信息True
。where
的工作方式与nonzero
您发布的表单相同,但是具有第二种形式:
np.where(mask,a,b)
可以粗略地认为它是条件表达式的numpy“ ufunc”版本:
a[i] if mask[i] else b[i]
(具有适当的广播a
和b
)。
至于有 两 nonzero
和argwhere
,他们是不同的概念。nonzero
构造为返回可用于索引的对象。如果0稀疏,则比创建整个布尔蒙版更轻巧:
mask = a == 0 # entire array of bools
mask = np.nonzero(a)
现在,您可以使用该掩码对其他数组等进行索引。但是,就目前而言,弄清哪些索引对应于0个元素并不是很好。那就是argwhere
进来的地方。
解决方法
在Numpy中nonzero(a)
,where(a)
和argwhere(a)
和a
作为一个numpy数组,似乎都返回该数组的非零索引。这三个电话之间有什么区别?
- 在
argwhere
文档上说:
np.argwhere(a)
与相同np.transpose(np.nonzero(a))
。
为什么要有一个只对输出进行转置的函数nonzero
?什么时候如此有用以至于它应该具有单独的功能?
where(a)
和之间有什么区别nonzero(a)
?他们不会返回完全相同的结果吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。