如何numpy.ndarray数组如何删除某一行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何numpy.ndarray数组如何删除某一行相关的知识,希望对你有一定的参考价值。

参考技术A import numpy as np
A = np.delete(A, 1, 0) # 删除A的第二行
B = np.delete(B, 2, 0) # 删除B的第三行
C = np.delete(C, 1, 1) # 删除C的第三列本回答被提问者和网友采纳
参考技术B C = np.delete(C, 1, 1) # 删除C的第 二 列

如何根据python中的第二列对二维数组(numpy.ndarray)进行排序? [复制]

【中文标题】如何根据python中的第二列对二维数组(numpy.ndarray)进行排序? [复制]【英文标题】:How to sort 2D array (numpy.ndarray) based to the second column in python? [duplicate] 【发布时间】:2014-05-07 01:55:12 【问题描述】:

我正在尝试将我的所有代码转换为 Python。我想对一个有两列的数组进行排序,以便排序必须基于升序的第二列。然后我需要对第一列数据求和(从第一行到例如第 100 行)。我使用了“Data.sort(axis=1)”,但它不起作用。有没有人有办法解决这个问题?

【问题讨论】:

【参考方案1】:

使用.argsort() 它会返回一个numpy.array 的索引,这些索引对给定的numpy.array 进行排序。您将其作为函数或数组上的方法调用。例如,假设您有

import numpy as np

arr = np.array([[-0.30565392, -0.96605562],
                [ 0.85331367, -2.62963495],
                [ 0.87839643, -0.28283675],
                [ 0.72676698,  0.93213482],
                [-0.52007354,  0.27752806],
                [-0.08701666,  0.22764316],
                [-1.78897817,  0.50737573],
                [ 0.62260038, -1.96012161],
                [-1.98231706,  0.36523876],
                [-1.07587382, -2.3022289 ]])

您现在可以在要排序的列上调用 .argsort(),它会为您提供一个行索引数组,用于对该特定列进行排序,您可以将其作为索引传递给原始数组。

>>> arr[arr[:, 1].argsort()]
array([[ 0.85331367, -2.62963495],
       [-1.07587382, -2.3022289 ],
       [ 0.62260038, -1.96012161],
       [-0.30565392, -0.96605562],
       [ 0.87839643, -0.28283675],
       [-0.08701666,  0.22764316],
       [-0.52007354,  0.27752806],
       [-1.98231706,  0.36523876],
       [-1.78897817,  0.50737573],
       [ 0.72676698,  0.93213482]])

您可以等效地使用numpy.argsort()

>>> arr[np.argsort(arr[:, 1])]
array([[ 0.85331367, -2.62963495],
       [-1.07587382, -2.3022289 ],
       [ 0.62260038, -1.96012161],
       [-0.30565392, -0.96605562],
       [ 0.87839643, -0.28283675],
       [-0.08701666,  0.22764316],
       [-0.52007354,  0.27752806],
       [-1.98231706,  0.36523876],
       [-1.78897817,  0.50737573],
       [ 0.72676698,  0.93213482]])

【讨论】:

【参考方案2】:

sorted(Data, key=lambda row: row[1]) 应该这样做。

【讨论】:

使用这个命令,我遇到了和以前一样的问题,在排序中重复。如果输入数据为:Data=[1.0 0.70 0.0 0.69 3.0 0.57 0.0 0.68 1.0 0.56 2.0 0.51] 排序结果为:[[0.0', '0.68'], ['0.0', '0.69'], ['0.70 ', '1.0'],['0.56', '1.0'], ['0.51', '2.0'], ['0.57', '3.0'] 你还有什么想法吗? 恐怕我不太明白这个问题。什么重复了?如果您的输入 Data 是一个平面列表,为什么对它进行排序会产生一个列表列表?

以上是关于如何numpy.ndarray数组如何删除某一行的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python3 中解码编码文字/字符串的 numpy 数组? AttributeError:“numpy.ndarray”对象没有属性“解码”

numpy ndarray 按条件筛选数组,关联筛选

如何为 numpy 数组创建圆形掩码?

如何使用cupy循环numpy ndarray?真的会提高执行时间吗?

如何将 numpy ndarray 保存为 .csv 文件?

如何在给定索引列表的情况下有效地更新 numpy ndarray