Seria possível, dado um array A, índices de linha e índices de coluna ruins, usar o fatiamento para criar um novo array que não tenha essas linhas ou colunas?
Isso pode ser feito com np.delete da seguinte maneira:
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)
Eu também sei que você pode usar fatiamento para selecionar certas colunas e linhas de um array. Mas eu estou pensando se ele pode ser usado para excluir certas colunas e linhas? E se não, qual a melhor maneira além np.delete
de fazer isso.
EDIT: Com base nos comentários, pode não ser possível com o slicing no lugar. Que tal criar um novo array com indexação avançada?
Pode ser feito com o seguinte código, mas é lento, procure uma alternativa mais rápida:
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)
Obrigado