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

使用numpy查找矩阵中所有元素为零的行

宇文迪
2023-03-14
问题内容

我的numpy矩阵很大M。矩阵的某些行的所有元素均为零,我需要获取这些行的索引。我正在考虑的天真的方法是遍历矩阵中的每一行,然后检查每个元素。但是,我认为有一种更好,更快的方法可以使用来完成此操作numpy。希望您能提供帮助!


问题答案:

这是一种方法。我认为numpy已使用导入import numpy as np

In [20]: a
Out[20]: 
array([[0, 1, 0],
       [1, 0, 1],
       [0, 0, 0],
       [1, 1, 0],
       [0, 0, 0]])

In [21]: np.where(~a.any(axis=1))[0]
Out[21]: array([2, 4])

这个答案略有不同:如何检查矩阵是否包含零列?

这是怎么回事:

any如果数组中的任何值为“
truthy”,则该方法返回True。非零数字被视为True,而0被视为False。通过使用参数axis=1,该方法将应用于每一行。对于示例a,我们有:

In [32]: a.any(axis=1)
Out[32]: array([ True,  True, False,  True, False], dtype=bool)

因此,每个值指示相应的行是否包含非零值。该~操作是二进制“不是”或补充:

In [33]: ~a.any(axis=1)
Out[33]: array([False, False,  True, False,  True], dtype=bool)

(给出相同结果的替代表达式是(a == 0).all(axis=1)。)

要获取行索引,我们使用where函数。它返回参数为True的索引:

In [34]: np.where(~a.any(axis=1))
Out[34]: (array([2, 4]),)

请注意,where返回的元组包含单个数组。 where适用于n维数组,因此它总是返回一个元组。我们想要该元组中的单个数组。

In [35]: np.where(~a.any(axis=1))[0]
Out[35]: array([2, 4])


 类似资料:
  • 在matlab中,我有一个非负数项的矩阵a。见以下一条: 我想找到所有零元素的邻居,除了零元素。这意味着我想在向量v中存储a(1,1),a(2,5),a(3,1),a(3,6),a(4,5)和a(5,1)的邻居,如果这些邻居中的一个是零,那么我就不存储它。 所谓元素(i,j)的邻居,是指离(i,j)远一个元素的元素,即A(i,j+1)、A(i,j-1)、A(i-1,j)、A(i-1,j-1)、A(

  • 我使用if-else检查numpy矩阵的索引i,i处的元素是否为0 得到了错误值错误:数组的真值有多个元素是含糊不清的。使用a.any()或a.all()对此有任何解决办法吗?

  • 问题内容: 我有3个div。 像这样: 他们将充满文字。我不确定多少。问题是,所有高度都必须相等。 我如何使用jQuery(或CSS)查找DIV最高的并将其他两个设置为相同的高度,从而创建3个相等高度的DIV。 这可能吗? 问题答案: 您不能轻松地通过高度选择或在CSS中进行比较,但是jQuery和一些迭代应该可以轻松解决此问题。我们将遍历每个元素并跟踪最高的元素,然后再次遍历并将每个元素的高度设

  • 我不知道该如何解决这个问题。我得到了一个有12个节点A-L的图。17个边缘连接它们。我被告知要找到从A到L的所有路径。我可以遍历一个节点多次,但只能遍历一次边。输出应该打印每个路径和路径总数。 例如,如果只有1个路径。输出应为: 我想一个递归的深度优先搜索函数应该可以解决这个问题,但我就是想不出一个打印每一条路径的方法。例如,如果我的函数找到一个路径ABDL并到达结尾L,它将打印ABDL。然后它回

  • 问题内容: 我需要找出矩阵是否为正定。我的矩阵是numpy矩阵。我期望在numpy库中找到任何相关方法,但没有成功。感谢您的帮助。 问题答案: 您还可以检查矩阵的所有特征值是否为正,如果是,则矩阵为正定:

  • 问题内容: 我正在尝试编写一种算法,用于在给定的子矩阵中查找子矩阵。为了解决这个问题,我编写了以下代码: 这段代码可以正常工作,但是我不确定这是问题的确切解决方案还是可以解决。请提供您的专家意见。提前致谢。 问题答案: 该算法对4×4矩阵和2×2子矩阵进行了硬编码。否则,它看起来像蛮力算法。 我会这样表示: 如果您想要更有效的方法,建议您将它们压扁,如下所示: 并在此序列中搜索以下模式: 使用标准