문제 설명:
행렬과 롤 값의 배열이 제공됨 , 작업은 해당 롤 값에 따라 독립적으로 행렬의 각 행을 롤링하는 것입니다. 예:
A = np.array([[4, 0, 0], [1, 2, 3], [0, 0, 5]]) r = np.array([2, 0, -1]) expected_result = np.array([np.roll(row, x) for row,x in zip(A, r)]) # [[0 0 4] # [1 2 3] # [0 5 0]]
Numpy 고급 인덱싱을 사용하는 솔루션:
행렬 행을 독립적으로 롤링하는 효율적인 접근 방식은 Numpy의 고급 인덱싱 기능을 활용하는 것입니다.
<code class="python">import numpy as np rows, column_indices = np.ogrid[:A.shape[0], :A.shape[1]] # Ensure negative shift to keep column_indices valid r[r < 0] += A.shape[1] column_indices = column_indices - r[:, np.newaxis] result = A[rows, column_indices]</code>
설명:
이 접근 방식을 사용하면 명시적인 for 루프를 우회하고 Numpy의 강력한 벡터화 연산을 활용하여 효율적이고 간결한 행 롤링이 가능합니다. 가장 빠른 방법인지 여부는 어레이 크기와 특정 시스템 구성에 따라 다릅니다.
위 내용은 고급 Numpy 인덱싱을 사용하여 매트릭스 행을 효율적으로 롤링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!