희소하고 대칭 인 배열이 있는데 해당 배열의 행과 열을 삭제하려고합니다. 주어진 행 (및 열)의 모든 개별 항목이 특정 임계 조건을 충족시키지 못하는 경우 예를 들어행 (또는 열)의 모든 값이 주어진 contion을 만족하지 않는 경우 대칭 배열의 행과 열 삭제
min_value = 2
a = np.array([[2, 2, 1, 0, 0],
[2, 0, 1, 4, 0],
[1, 1, 0, 0, 1],
[0, 4, 0, 1, 0],
[0, 0, 1, 0, 0]])
는 난이 적어도 2 이상의 값이되도록 상기 예와이 수득 할 한 행 (및 열)을 유지하려는 경우
a_new = np.array([2, 2, 0],
[2, 0, 4],
[0, 4, 1]]
그래서 모든 항목이 2보다 적기 때문에 행 3과 5 (및 열 3과 5)를 잃을 것입니다. How could I remove the rows of an array if one of the elements of the row does not satisfy a condition?, Delete columns based on repeat value in one row in numpy array 및 Delete a column in a multi-dimensional array if all elements in that column satisfy a condition을 살펴 보았지만 표시된 해결책은 달성하려는 내용과 맞지 않습니다. .
내가 비슷한 무언가를 수행하는 생각을했다 :
a_new = []
min_count = 2
for row in a:
for i in row:
if i >= min_count:
a_new.append(row)
print(items)
print(temp)
하지만 나쁜 열을 삭제하지 않기 때문에 문제가 해결되지 않고 두 개 (또는 그 이상)의 인스턴스가있는 경우 큰 값이다 임계 값은 여러 번 행을 추가합니다.
대단히 감사합니다. 예상보다 훨씬 웅장합니다. 이것은 중요하지 않지만 삭제 된 행 및 열 목록을 생성하는 방법이 있습니까? – Lukasz
@ 루카스'np.flatnonzero (~ ((a> = min_value) .any (0)))'? – Divakar
은 빈 목록을 생성합니다. 이리스트를 생성하는 것은 대단히 중요하지 않습니다. 특히 더 큰 행렬에 대해서는 좋았을 것입니다. – Lukasz