如何numpy.ndarray数组如何删除某一行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何numpy.ndarray数组如何删除某一行相关的知识,希望对你有一定的参考价值。
参考技术A import numpy as npA = 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”对象没有属性“解码”
如何使用cupy循环numpy ndarray?真的会提高执行时间吗?