2017-10-19 22 views
1

문자열과 정수를 모두 포함하는 목록에서 np.random.choice를 사용하면 정수가 반환 될 때 문자열로 강제 변환됩니다. 이것은 의도 된 행동입니까?np.random.choice가 강요 당했습니까?

>>>numpy.random.choice([1,2,3,4]) 1

하지만

>>>numpy.random.choice(['a',1,2,3,4]) '1'

은 내가 my_list[np.random.choice(range(len(my_list)))]을 할 수있는 것 같아요,하지만 오히려 추한 것 같다.

+2

'size> 1'을 지정하면 유니폼 배열을 반환해야하기 때문에 그것이 선택되기 전에 모든 것을 공통 유형으로 강제합니다. – Barmar

+1

'numpy' 대신에'random.choice'를 쓰면 이런 일이 발생합니까? – Barmar

+1

NumPy는 동일한 유형의 요소가있는 고정 배열로 작업하기를 원할 것이기 때문에 실제로 강제 변환을해야합니다. 그것이 존재하는 이유입니다. 일반적으로'numpy.random.choice'는 배열에서 작동하며, 그렇지 않으면 먼저 배열로 입력을 변환 한 다음 계속 진행합니다. 여기에 무슨 일이 일어나는가. – Evert

답변

0

이것은 임의 선택과 관련이 없습니다. NumPy 메서드는 NumPy 배열과 함께 작동하며, 파이썬 목록이 있으면 다른 작업을 수행하기 전에 배열로 변환합니다. 변환 결과는 다음과 같습니다.

>>> np.array(['a', 1, 2, 3, 4]) 
array(['a', '1', '2', '3', '4'], 
     dtype='<U1') 

한 문자 유니 코드 문자열의 배열. 선택은이 배열에서 이루어집니다.