给定一个数组 A、错误的行索引和错误的列索引,是否可以使用切片来创建一个没有这些行或列的新数组?
可以使用 np.delete 完成如下操作:
import numpy as np
A=np.random.rand(20,16)
bad_col=np.arange(0,A.shape[1],4)[1:]
bad_row=np.arange(0,A.shape[0],4)[1:]
Anew=np.delete(np.delete(A,bad_row,0),bad_col,1)
print('old shape ',A.shape)
print('new shape ',Anew.shape)
我还知道可以使用切片从数组中选择某些列和行。但我想知道它是否可以用于排除某些列和行?如果不行,除了np.delete
这样做之外最好的方法是什么。
编辑:根据评论,可能无法使用切片。使用高级索引创建新数组怎么样?
可以使用以下代码完成,但速度很慢,需要寻找更快的替代方案:
good_col = [i for i in range(A.shape[1]) if i==0 or i % 4 != 0]
good_row=[ i for i in range(A.shape[0]) if i==0 or i % 4 != 0]
Anew2=A[good_row,:][:,good_col]
print('new shape ',Anew2.shape)
谢谢