반응형
부울 배열을 int 배열로 변환하는 방법
Scilab을 사용하며 불리언 배열을 정수 배열로 변환하고 싶습니다.
>>> x = np.array([4, 3, 2, 1])
>>> y = 2 >= x
>>> y
array([False, False, True, True], dtype=bool)
Scilab에서 사용할 수 있는 기능:
>>> bool2s(y)
0. 0. 1. 1.
1을 곱하는 것도 가능합니다.
>>> 1*y
0. 0. 1. 1.
파이썬에서 이를 위한 간단한 명령이 있습니까, 아니면 루프를 사용해야 합니까?
Numpy 배열에는 다음이 있습니다.astype방법.그냥 해요y.astype(int).
어레이를 사용하는 용도에 따라 이 작업이 필요하지 않을 수도 있습니다.대부분의 경우 Bool은 자동으로 int로 승격되므로 명시적으로 변환할 필요 없이 int 배열에 추가할 수 있습니다.
>>> x
array([ True, False, True], dtype=bool)
>>> x + [1, 2, 3]
array([2, 2, 4])
그1*y방법은 Numpy에서도 작동합니다.
>>> import numpy as np
>>> x = np.array([4, 3, 2, 1])
>>> y = 2 >= x
>>> y
array([False, False, True, True], dtype=bool)
>>> 1*y # Method 1
array([0, 0, 1, 1])
>>> y.astype(int) # Method 2
array([0, 0, 1, 1])
Python 목록을 Boolean에서 int로 변환하는 방법을 요청하는 경우 다음을 사용할 수 있습니다.map실행 방법:
>>> testList = [False, False, True, True]
>>> map(lambda x: 1 if x else 0, testList)
[0, 0, 1, 1]
>>> map(int, testList)
[0, 0, 1, 1]
또는 목록 이해 사용:
>>> testList
[False, False, True, True]
>>> [int(elem) for elem in testList]
[0, 0, 1, 1]
Numpy를 사용하여 다음을 수행할 수 있습니다.
y = x.astype(int)
numpy 배열이 아닌 배열을 사용하는 경우 목록 이해도를 사용할 수 있습니다.
y = [int(val) for val in x]
대부분의 경우 변환이 필요하지 않습니다.
>>>array([True,True,False,False]) + array([1,2,3,4])
array([2, 3, 3, 4])
올바른 방법은 다음과 같습니다.
yourArray.astype(int)
또는
yourArray.astype(float)
이것을 하는 재미있는 방법은
>>> np.array([True, False, False]) + 0
np.array([1, 0, 0])
비루프 솔루션을 요청하셨겠지만, 제가 생각해 낼 수 있는 유일한 솔루션은 내부적으로 루프하는 것입니다.
map(int,y)
또는:
[i*1 for i in y]
또는:
import numpy
y=numpy.array(y)
y*1
언급URL : https://stackoverflow.com/questions/17506163/how-to-convert-a-boolean-array-to-an-int-array
반응형
'codememo' 카테고리의 다른 글
| 브레이스가 없는 스위치 문을 사용하는 유용한 사례가 있습니까? (0) | 2023.06.17 |
|---|---|
| "수입*"이 나쁜 이유는 무엇입니까? (0) | 2023.06.17 |
| 상수 식에서 0으로 나누기 (0) | 2023.06.17 |
| iOS의 Firebase Analytics 이벤트가 표시되지 않음 (0) | 2023.06.17 |
| 인덱스 및 개체 유형이 아닌 Pandas DataFrame에서 값을 가져오는 방법 (0) | 2023.06.12 |