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
답변
이렇게하는 재미있는 방법은
>>> np.array([True, False, False]) + 0
np.array([1, 0, 0])