一次删除多行 numpy 数组 python

delete more than one row at a time numpy array python

我想删除第二行之后的所有行,但是,当我尝试应用以下代码时,该函数只删除第三行和第五行,并保留第四行关于如何改进它的任何想法而不做一个循环

arr1 = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = array([[10, 11, 12], [13, 14, 15]])
arr1 = concatenate((arr1, arr2), axis=0)
print(arr1)
print(delete(arr1, (2, 4), axis=0))

您可以只传递一个元组作为第二个参数。

>>> Arr = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> delete(Arr, (0, 2), axis=0)
array([[4, 5, 6]])

顺便说一句,delete(Arr, (3), axis=0) 在您的示例中不起作用,因为此数组的最大索引为 2。

关于您的编辑,错误与上述相同:您使用的索引(3 或 5)与数组的实际索引不对应。 Arr[3]Arr[5] 对于形状为 (3,3).

的数组没有任何意义

我使用了下面的代码,效果很好

arr1 = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = array([[10, 11, 12], [13, 14, 15]])
arr1 = concatenate((arr1, arr2), axis=0)
print(arr1)
print(delete(arr1, (range(2, 5)), axis=0))

如果您要删除的数据是连续的(就像在您的示例中一样),使用 numpy 的数组索引可以说是实现您想要的结果的最简单方法。

import numpy as np 

arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = np.array([[10, 11, 12], [13, 14, 15]])
arr3 = np.r_[arr1, arr2]

# First dimension corresponds to rows, second dimension corresponds to columns. 
print(arr3[:2, :])