ProgramingTip

numpy에서 부울 배열을 그대로 배열로 바꾸는 방법

bestdevel 2020. 12. 8. 19:19
반응형

numpy에서 부울 배열을 그대로 배열로 바꾸는 방법


부울 마스크 배열과 위치 조건이 참인 배열에있는 위치의 정수 성능을 검색하는 방법 Numpy

예를 들면 :

x=np.array([range(100,1,-1)])
#generate a mask to find all values that are a power of 2
mask=x&(x-1)==0
#This will tell me those values
print x[mask]

이 경우, 나는 만약 알고 싶습니다 i. 반복하지 않고 생성 할 수 있습니까?maskmask[i]==True


다른 옵션 :

In [13]: numpy.where(mask)
Out[13]: (array([36, 68, 84, 92, 96, 98]),)

이것은 numpy.where(mask==True).


numpy.nonzero()이 정보를 찾는 데 사용할 수 있습니다.


np.arange(100,1,-1)
array([100,  99,  98,  97,  96,  95,  94,  93,  92,  91,  90,  89,  88,
        87,  86,  85,  84,  83,  82,  81,  80,  79,  78,  77,  76,  75,
        74,  73,  72,  71,  70,  69,  68,  67,  66,  65,  64,  63,  62,
        61,  60,  59,  58,  57,  56,  55,  54,  53,  52,  51,  50,  49,
        48,  47,  46,  45,  44,  43,  42,  41,  40,  39,  38,  37,  36,
        35,  34,  33,  32,  31,  30,  29,  28,  27,  26,  25,  24,  23,
        22,  21,  20,  19,  18,  17,  16,  15,  14,  13,  12,  11,  10,
         9,   8,   7,   6,   5,   4,   3,   2])

x=np.arange(100,1,-1)

np.where(x&(x-1) == 0)
(array([36, 68, 84, 92, 96, 98]),)

이제 다음과 같이 바꾸십시오.

x[x&(x-1) == 0]

인덱서 방식 을 선호하는 경우 부울 목록을 numpy 배열로 변환 할 수 있습니다.

print x[nd.array(mask)]

참고 URL : https://stackoverflow.com/questions/8218032/how-to-turn-a-boolean-array-into-index-array-in-numpy

반응형