정수의 numpy 부울 배열 표현을 만드는 가장 쉬운 방법은 무엇입니까? 예를 들어, 6
에서 np.array([False, True, True], dtype=np.bool)
으로 매핑하십시오.numpy 정수의 부울 배열 표현
답변
을 n
이 정수이면 표현식 (n & (1 << np.arange(int(floor(log(n, 2) + 1))))) > 0
은 첫 번째 위치에 최하위 비트가있는 비트를 나타내는 부울 배열을 만듭니다. 예를 들어
In [224]: n = 5
In [225]: from math import floor, log
In [226]: n = 5
In [227]: (n & (1 << np.arange(int(floor(log(n, 2) + 1))))) > 0
Out[227]: array([ True, False, True], dtype=bool)
In [228]: n = 8
In [229]: (n & (1 << np.arange(int(floor(log(n, 2) + 1))))) > 0
Out[229]: array([False, False, False, True], dtype=bool)
In [230]: n = 514
In [231]: (n & (1 << np.arange(int(floor(log(n, 2) + 1))))) > 0
Out[231]: array([False, True, False, False, False, False, False, False, False, True], dtype=bool)
영리한! 저는 실제로'm = int (floor (log (n, 2) + 1))'을 지정하고 있습니다. 그래서이 해법은 저에게 가장 짧습니다. –
먼저 np.binary_repr
을 사용하여 정수 값의 이진 표현을 가져옵니다. 여기서 비트 배열에 원하는 너비를 지정하십시오. 마지막으로, 그 후
>> reversed_bin_array[::-1]
reversed_bin_array = '101'
:이어서
>>> n = 5
>>> bin_n = bin(n)
'0b101'
>>> smallest_length = n.bit_length()
3
>>> bin_array = np.binary_repr(5, width=smallest_length)
bin_array = '101'
출력 이진 스트링의 비트의 역순 : I 프로그래밍 지정된 정수를 표현하는데 필요한 비트 수를 결정하는 방법을 포함시켰다 이전에 지정된 비트 너비의 비트 배열을 가져 오려면 bitarray
을 사용하십시오.
>>> bitarray('11110010') # from a string
나는 행복 코딩이 도움이 되었으면 좋겠 : 나는 bitarray
객체가 편리 비트 배열에 저장하고 조작 할 수있는 매우 유용한 수단 것으로 나타났습니다!
'np.invert'는 비트의 순서를 반대로하지 않습니다. – user2357112
와우 ... 내가 뭘 생각 했니? 글쎄, 고쳐. 그게 더 좋을까 @ user2357112 –
일종의,하지만 당신은 "이전 단계에서 이미 되돌릴"비트의 순서에 대한 느린 참조가 있습니다. 또한 질문자가 수동으로 너비를 지정하는 대신 필요한 최소 너비를 자동 계산하려고하며 질문자가 질문 한 NumPy 배열을 얻는 방법을 완전하게 표시해야합니다. – user2357112
은 아마 가장 쉬운 아니지만, 컴팩트 한 방법은
from numpy import array array([i for i in bin(5)[2:]]) == '1'
여기 np.binary_repr
및 np.fromstring
사용하여 접근 방식이다 -
np.fromstring(np.binary_repr(num), dtype=np.uint8)==49
샘플 실행 -
In [39]: num
Out[39]: 17
In [40]: np.fromstring(np.binary_repr(num), dtype=np.uint8)==49
Out[40]: array([ True, False, False, False, True], dtype=bool)
- 1. 부울 배열에 정수의 이진 표현
- 2. NumPy 부울 배열 경고?
- 3. Coq : 정수의 부울 비교
- 4. numpy 요소를 None으로 비교하는 부울 배열 만들기
- 5. WPF Combobox 정수의 그래픽 표현
- 6. Go 부호없는 정수의 이진 표현
- 7. 부울 표현 알고리즘 단순화
- 8. 에 대한 부울 표현
- 9. 부울 대수 표현 단순화
- 10. 필수 속성의 부울 표현
- 11. 배열 배열 numpy
- 12. 부울 인덱스를 사용하여 numpy 배열 섹션을 내부 수정합니다.
- 13. NumPy int64 바이너리 표현 디코딩
- 14. 부울 배열
- 15. 를 OCaml - - GADT 부울 표현
- 16. haskell의 다중 행 부울 표현
- 17. 파이썬에서 복잡한 부울 표현 (django)
- 18. C에서 가장 빠른 부울 표현
- 19. xsl : 부울 데이터 형식이있는 표현
- 20. PHP에서 이상한 부울 표현 해결
- 21. 아래의 예제에서 C# 부울 표현
- 22. C에서 정수의 char 배열 곱하기
- 23. Numpy bug? 어떻게 numpy 레코드 배열 ("재 배열")을 정렬합니까?
- 24. numpy 배열 유형의 차이점
- 25. 반복 numpy 하위 배열
- 26. NumPy 배열 슬라이스 없음
- 27. scipy.sparse.dok_matrix에 numpy 배열 추가
- 28. Numpy 배열 값 "오염"
- 29. Numpy 배열 조건부 일치
- 30. Numpy 배열 메모리 관리
이 질문은 불행하게도 유용한 답변이 없습니다 : http://stackoverflow.com/questions/22773443/built-in-function-in-numpy-to-interpret-an-integer -to-an-of-boolean-values –
연결된 질문에 대한 대답이 잘못되었습니다. 제가 올바르게 읽는 것이 아니라면 사과드립니다.하지만 그 질문에 대한 대답은 당신이 요구하는 것을 정확하게하는 법을 아주 깔끔하게 정리 한 것 같습니다. –
@VladislavMartin 필자는 정수를'np.int8'의 배열로 변환해야합니다.이 배열은 못생긴 것이고 출력은 가장 중요한 비트를 먼저 넣고 비트를 8 개의 그룹으로 그룹화합니다. –