반응형
부울 배열을 정수 배열로 변환하는 방법
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)
비 루핑 솔루션을 요청한 것을 알고 있지만 내가 생각 해낼 수있는 유일한 솔루션은 어쨌든 내부적으로 루프 할 수 있습니다.
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
반응형
'Programming' 카테고리의 다른 글
파이프를 사용하여 두 프로그램간에 간단한 문자열을 보내는 방법은 무엇입니까? (0) | 2020.08.11 |
---|---|
Ruby에서 모듈 변수 만들기 (0) | 2020.08.11 |
두 좌표 사이의 거리를 계산하는 기능 (0) | 2020.08.11 |
cURL을 사용하여 기본 HTTP 인증을 올바르게 정의하는 방법은 무엇입니까? (0) | 2020.08.11 |
Ruby : HTTP를 통해 multipart / form-data로 파일을 게시하는 방법은 무엇입니까? (0) | 2020.08.11 |