2012-11-15 3 views
2

라는 이름의 열 (데이터 유형)과 하늘의 배열을 초기화하고, 평소와 같이, 나는 단지 동시에 그 두를 만족하는 방법을 알아낼 수 있습니다파이썬 - 나는 세 가지 제약이

  1. 다른 열이 다른 데이터 유형 (그래서 COL 1에서 모든 문자열이지만, COL이 모든 진수 등이다)

내가 현재 사용하고 NumPy와 포함 다차원 배열

  • 명명 된 열 내 데이터를 저장하는 ndarrays 각 열의 다른 유형. 그때 열 이름에 대한 프록시 헤더 (문자열 이름 목록)을 사용하여 (및했습니다

    norm = numpy.empty((79, len(header)), dtype=numpy.object) 
    

    의 인덱스를 찾는 : 그것은 여러 데이터 유형을 저장할 수 있도록 내가 배열을 초기화했습니다 헤더의 값) 그러나 이것은 정말로 단조로운 것 같습니다.

    나는 주위를 둘러 보았다 적이 있지만 지금까지 내가 말할 수있는, 당신은 당신이 그렇게 당신이 같이 값 배열을 채우기 위해이 열 이름 (및 유형)와 배열을 초기화 할 때 : Store NumPy Row and Column Headers

    나는 이런 식으로 뭔가하려고 할 때 때문에 :

    n=numpy.empty((5,2), dtype=[("sub", "str"), ("words", Decimal)]) 
    n[0] = ['06', Decimal(10)] 
    

    를 내가이 오류를 얻을 :

    Traceback (most recent call last): 
    File "<string>", line 1, in <fragment> 
    ValueError: Setting void-array with object members using buffer. 
    
  • +0

    '("sub", "str")'이 정확하고'("sub", str)'이 아니겠습니까? 그 목록의 두 번째 요소에서 적어도 따릅니다. – Bakuriu

    +0

    당신이 얼마나 가까이에 있는지 고려해보십시오 ... 단지리스트를 사용하지 않고 튜플을 사용하십시오 :'n [0] = ('06, Decimal (10))'은 작동합니다. 또는 각 열을 따로 설정하는 것 같습니다. – seberg

    답변

    2

    을이 시도 :

    >>> n = numpy.empty((5,2), dtype=[("sub", "S10"), ("words", Decimal)]) 
    >>> n[0] = ('06', Decimal(10)) 
    >>> print n 
    [[('06', Decimal('10')) ('06', Decimal('10'))] 
    [('', None) ('', None)] 
    [('', None) ('', None)] 
    [('', None) ('', None)] 
    [('', None) ('', None)]] 
    

    @seberg에서 언급했듯이, 목록이 아닌 튜플로 설정하려고합니다. 또한 "sub"에 저장할 문자열의 길이를 지정해야합니다. 울퉁불퉁 한 구조 배열은 임의의 길이 문자열을 저장하지 않으므로 최대 길이를 선택해야합니다. 실제로 최대 길이를 선택할 수없는 경우 str 대신 object을 사용하십시오.

    관련 문제