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

删除numpy数组中的行

董品
2023-03-14
问题内容

我有一个可能看起来像这样的数组:

ANOVAInputMatrixValuesArray = [[ 0.96488889, 0.73641667, 0.67521429, 0.592875,
0.53172222], [ 0.78008333, 0.5938125, 0.481, 0.39883333, 0.]]
请注意,其中一行的结尾处为零。我想删除任何包含零的行,同时保留所有包含非零值的行。

但是,每次填充时,数组将具有不同的行数,并且零将每次都位于不同的行中。

我使用下面的代码行获取每行中非零元素的数量:

NumNonzeroElementsInRows    = (ANOVAInputMatrixValuesArray != 0).sum(1)

对于上面的数组,NumNonzeroElementsInRows包含:[5 4]

五个表示第0行中的所有可能值都不为零,而四个表示第1行中的可能值之一为零。

因此,我试图使用以下代码行来查找和删除包含零值的行。

for q in range(len(NumNonzeroElementsInRows)):
    if NumNonzeroElementsInRows[q] < NumNonzeroElementsInRows.max():
        p.delete(ANOVAInputMatrixValuesArray, q, axis=0)

但是由于某种原因,即使执行大量打印命令表明所有变量似乎都正确填充了代码,该代码似乎也无能为力。

必须有一些简单的方法来简单地“删除包含零值的任何行”。

谁能告诉我要编写什么代码来完成此任务?


问题答案:

从数组中删除行和列的最简单方法是该numpy.delete方法。

假设我有以下数组x

x = array([[1,2,3],
        [4,5,6],
        [7,8,9]])

要删除第一行,请执行以下操作:

x = numpy.delete(x, (0), axis=0)

要删除第三列,请执行以下操作:

x = numpy.delete(x,(2), axis=1)

因此,您可以找到其中包含0的行的索引,将它们放在列表或元组中,并将其作为函数的第二个参数传递。



 类似资料:
  • 问题内容: 我有一个尺寸为(48,366,3)的numpy数组,我想从数组中删除最后一列以使其为(48,365,3)。最好的方法是什么?(所有条目都是整数。我使用的是Python v2.6) 问题答案: 您可以尝试: http://docs.scipy.org/doc/numpy/reference/generated/numpy.delete.html 或者只是获取所需的数组切片并将其写入新数组

  • 问题内容: 如何删除二维数组的重复行? 答案应该如下: 如果有两行相同,那么我想删除一个“重复”行。 问题答案: 您可以使用。由于您需要唯一的行,因此我们需要将它们放入元组: _只是应用到_阵列会导致这样的: 打印出列表中的唯一元素 。因此,将它们放入元组会导致: 打印: 更新 在新版本中,您需要设置

  • 问题内容: 我有一个numpy值数组: 我想从数组中删除具有重复值的行。例如,上述数组的结果应为: 我不确定如何使用numpy有效地做到这一点而无需循环(数组可能会很大)。有人知道我该怎么做吗? 问题答案: 这是一个选择:

  • 问题内容: 我想删除彼此跟随的重复项,但不要删除整个数组中的重复项。另外,我想保持顺序不变。 所以如果输入是输出 我找到了一种使用方法,但我正在寻找更快的NumPy解决方案。 问题答案: 一般的想法是用来查找数组中两个连续元素之间的差异。然后我们只索引那些给出差异元素的索引。但由于长度 是1那么短的索引之前,我们需要对涉及diff阵列的开始。 说明:

  • 问题内容: 我运行,其中返回的列表,即和: 是一个二维数组,在底部具有旋转的零线(即使在我的测试集中的所有示例中都得到了证明): 。现在,我想分为两个矩阵: 和: (提取所有零线)。似乎接近此解决方案:删除numpy array中的行 。 编辑: 更加有趣:返回-matrix。不,我期望的是: 问题答案: 使用带有参数:

  • 问题内容: 我正在使用2D形状数组存储经度和纬度对。一方面,我必须合并两个2D数组,然后删除所有重复的条目。我一直在寻找类似于numpy.unique的函数,但是我没有运气。我一直在考虑的任何实现都看起来“没有优化”。例如,我正在尝试将数组转换为元组列表,使用set删除重复项,然后再次转换为数组: 是否有任何现有的解决方案,所以我不会重新发明轮子吗? 为了清楚起见,我在寻找: 顺便说一句,我只想使