배열에서 삭제와 관련하여 질문이 있습니다. 3-D numpy 배열 (좌표는 z, y, x)이고 예상 크기는 900^3입니다. 소수의 값만 0이 아니지만 중요한 공간 분포를 갖습니다. 해당 배열에 0 만있는 2 차원 슬라이스를 모두 삭제하고 싶습니다. 즉, 모든 관련 데이터가 들어있는 최소 크기의 배열이 필요합니다.Python Numpy Array에서 0 삭제하기
내 시도는 다음과 같습니다
while np.all(a[0]==0):
a=np.delete(a,0,0)
while np.all(a[a.shape[0]-1]==0) and a.shape[0]>1:
a=np.delete(a,-1,0)
및 z 방향에 대해 작동하는 것 같다. 다른 두 방향에서 어떻게 평등을 할 수 있습니까? 그리고 그것을 더 잘 할 수있는 다른 방법이 있을까요?
또 다른 아이디어는tmp=np.delete(tmp,np.all(tmp==0,axis=1),1)
했지만 하나는 처음부터에만 작동하는 것 같다 그리고 마지막에 0을 밖으로 떠난다.
3D 공간에서 배열을 회전하는 것이 가능할까요?
for ax in range(3):
all_but_ax = [i for i in range(3) if i != ax]
a = delete(a, where(apply_over_axes(sum, abs(a), all_but_ax).ravel() == 0),
ax)
:
3d 공간에서 배열을 회전하려면 numpy.roll을 사용할 수 있습니다. – ebarr