如何从Numpy数组中删除最后n行?

时间:2018-02-06 00:29:10

标签: python arrays numpy

我正在尝试从numpy数组中删除最后几行。我可以使用以下代码删除0到i行。

for i, line in enumerate(two_d_array1):
    if all(v == 0 for v in line):
        pass
    else:
        break

two_d_array2 = np.delete(two_d_array1, slice(0, i), axis=0)

有关如何在数组末尾执行相同操作的任何建议吗?

for i, line in enumerate(reversed(two_d_array2)):
    if all(v == 0 for v in line):
        pass
    else:
        break

two_d_array3 = np.delete(two_d_array2, **slice(0, i)**, axis=0)

2 个答案:

答案 0 :(得分:11)

您可以使用slice表示法进行索引。

从数组中删除最后n行:

a = np.array(range(10)).reshape(5, 2)
>>> a
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])

n = 2  # Remove last two rows of array.
>>> a[:-n, :]
array([[0, 1],
       [2, 3],
       [4, 5]])

要从数组中删除第一个n行:

>>> a[n:, :]  # Remove first two rows.
array([[4, 5],
       [6, 7],
       [8, 9]])

答案 1 :(得分:0)

你也可以使用: 数组名称[:-n] 这是一种比前一种时间复杂度最佳的有效方法