2014-12-23 11 views
0

NumPy argmax 메서드를 사용하는 동안 다음 오류가 발생했습니다. 어떤 사람이 나를 도울 수있는 것은 무슨 일이 있었는지 이해하기 :NumPy argmax 및 구조화 된 배열 오류 : 읽을 수있는 버퍼 개체가 예상 됨

import numpy as np 
b = np.zeros(1, dtype={'names':['a','b'], 'formats': ['i4']*2}) 
b.argmax() 

오류가

TypeError: expected a readable buffer object 

동안 문제없이 다음 실행 :

a = np.zeros(3) 
a.argmax() 

그것은 구조화에 오류 회비를 보인다 정렬. 그러나 그 이유를 설명하는 데 도움을 줄 수 있습니까?

array([(0, 0)], dtype=[('a', '<i4'), ('b', '<i4')]) 

내가 argmax와 다른 오류 메시지가 얻을 : 귀하의 b

답변

1

이다

TypeError: Cannot cast array data from dtype([('a', '<i4'), ('b', '<i4')]) to dtype('V8') according to the rule 'safe' 

을하지만이 작동 : 일반적으로 당신은 수학 연산을 수행 할 수 없습니다

In [88]: b['a'].argmax() 
Out[88]: 0 

구조화 된 배열의 필드에 걸쳐 각 필드 내에서 작동 할 수 있습니다 (숫자 인 경우). 필드는 숫자, 문자열 및 기타 객체가 혼합되어있을 수 있으므로 이러한 작업이 의미가있는 특수한 경우를 처리하기위한 노력은 없습니다.

당신은 정말 분야에 걸쳐 작업으로, 다른 view를 시도해야하는 경우, 예를 들면 :

In [94]: b.view('<i4').argmax() 
Out[94]: 0