当前位置: 首页 > 面试题库 >

nonzero(a),where(a)和argwhere(a)之间的差异。什么时候使用?

令狐宏伟
2023-03-14
问题内容

在Numpy中nonzero(a)where(a)argwhere(a)a作为一个numpy数组,似乎都返回该数组的非零索引。这三个电话之间有什么区别?

  • argwhere文档上说:

np.argwhere(a)与相同np.transpose(np.nonzero(a))

为什么要有一个只对输出进行转置的函数nonzero?什么时候如此有用以至于它应该具有单独的功能?

  • where(a)和之间有什么区别nonzero(a)?他们不会返回完全相同的结果吗?

问题答案:

nonzeroargwhere两个就给大家介绍其中数组中的元素信息True
where的工作方式与nonzero您发布的表单相同,但是具有第二种形式:

np.where(mask,a,b)

可以粗略地认为它是条件表达式的numpy“ ufunc”版本:

a[i] if mask[i] else b[i]

(具有适当的广播ab)。

至于有 nonzeroargwhere,他们是不同的概念。
nonzero构造为返回可用于索引的对象。如果0稀疏,则比创建整个布尔蒙版更轻巧:

mask = a == 0  # entire array of bools
mask = np.nonzero(a)

现在,您可以使用该掩码对其他数组等进行索引。但是,就目前而言,弄清哪些索引对应于0个元素并不是很好。那就是argwhere进来的地方。



 类似资料:
  • 问题内容: 使用和in 之间有什么性能差异? 如果是这样,哪个更好,为什么?您能简要解释一下以了解这一点吗? 问题答案: 查看生成的字节码: 产生(使用) 因此使用(jdk1.6.0_18): 创造 而 全部导致 但是,在笔记本电脑上进行粗略的性能测试后,两者的运行时间几乎没有差异(有时++ x更快,有时x = x + 1更快),因此我不必担心性能影响。

  • 问题内容: 我正在学习Java,但有两个问题: 之间有什么区别? 和 考虑到: 之间有什么区别: (A)x.run_function(); 假设A和B都具有函数,将执行哪个函数? 问题答案: 最重要的区别在于对象的静态和动态类型与对象的引用之间。 说B延伸A,C延伸B。 对象的动态类型(新类型中使用的类型)是其实际的运行时类型:它定义了对象的实际方法。 对象引用(变量)的静态类型是编译时类型:它定

  • 问题内容: public void push(E element) { if (size == elements.length) { resize(); // doubel of size } elements[size++] = element; } Java中的a 和 a或a–和–a有什么区别 谢谢 问题答案: 或是后缀运算符,表示a的值将在对表达式求值后更改。 或是前缀运算,表示a的值将在对

  • 问题内容: 正如我在标题中提到的 a + = b和a = + b以及a 和 a有什么区别?我有点困惑 问题答案: 相当于 相当于 且两者都增加1。不同之处在于,返回的是增量之前的值,而返回的是增量之后的值。 那是:

  • 问题内容: 我目前正在尝试了解在自定义类上使用和之间的区别。有许多网站说使用’+’运算符会导致使用特殊方法-到目前为止还不错。 但是,当我运行以下示例时,我得到两个不同的结果。 结果: 现在,据我了解,执行Python时检查/执行int方法-发现没有实现添加int和C对象的实现-返回NotImplemented- 这使Python知道检查对象C并执行其中的代码。 为什么执行代码会导致结果,但是其他

  • 问题内容: 如果我尝试这样做: 我得到以下输出: 演示:http://codepad.org/ncVuJtJu 这是为什么? 我希望将其作为输出: 我的理解: 但是为什么不输出呢? 问题答案: 所有解释为什么得到2而不是1的答案实际上都是错误的。根据PHP文档,混合并以这种方式是不确定的行为,所以你可以得到1或2切换到不同版本的PHP可能会改变你得到的结果,这将是一样有效。 请参阅示例1,其中显示