나는 3D 배열이 int32
있습니다. 각 항목을 배열에서 "n"번째 위치의 해당 비트 값으로 변환하고 싶습니다. 내 현재 접근 방식은 전체 배열을 반복하는 것이지만 훨씬 더 효율적으로 수행 할 수 있다고 생각합니다.
for z in range(0,dim[2]):
for y in range(0,dim[1]):
for x in range(0,dim[0]):
byte='{0:032b}'.format(array[z][y][x])
array[z][y][x]=int(byte>>n) & 1
귀하의 답변을 기대합니다.
큰 배열을 다루는 경우 numpy
. numpy 배열에 비트 연산을 적용하는 것이 파이썬 목록에 적용하는 것보다 훨씬 빠릅니다.
import numpy as np
a = np.random.randint(1,65, (2,2,2))
print a
Out[12]:
array([[[37, 46],
[47, 34]],
[[ 3, 15],
[44, 57]]])
print (a>>1)&1
Out[16]:
array([[[0, 1],
[1, 1]],
[[1, 1],
[0, 0]]])
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다