0이 아닌 요소를 특정 면에 맞춰 정렬하는 것(종종 검색에 유용함)은 NumPy 배열에 대해 직접 수행할 수 있는 일반적인 작업입니다. 방법은 다음과 같습니다. -
import numpy as np def justify(a, invalid_val=0, axis=1, side='left'): """ Justifies a 2D array Parameters ---------- A : ndarray Input array to be justified axis : int Axis along which justification is to be made side : str Direction of justification. It could be 'left', 'right', 'up', 'down' It should be 'left' or 'right' for axis=1 and 'up' or 'down' for axis=0. """ if invalid_val is np.nan: mask = ~np.isnan(a) else: mask = a!=invalid_val justified_mask = np.sort(mask,axis=axis) if (side=='up') | (side=='left'): justified_mask = np.flip(justified_mask,axis=axis) out = np.full(a.shape, invalid_val) if axis==1: out[justified_mask] = a[mask] else: out.T[justified_mask.T] = a.T[mask.T] return out
위의 스니펫은 네 가지 가능한 방향 중 하나로 선택한 축을 따라 2D 배열을 정당화할 수 있습니다. -
# sample input array a = np.array([[1, 0, 2, 0], [3, 0, 4, 0], [5, 0, 6, 0], [0, 7, 0, 8]]) # shift to left print(justify(a, axis=0, side='up')) # shift to down print(justify(a, axis=0, side='down')) # shift to left print(justify(a, axis=1, side='left')) # shift to right print(justify(a, axis=1, side='right'))
위 내용은 NumPy 배열의 0이 아닌 요소를 효율적으로 정당화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!