2013-03-31 6 views
4

그래서이 이되어야합니다. 그러나 어떤 이유로 든 플로트 배열로 문자열 배열을 변환하려고하는 것은 아닙니다. numpy 문자열 배열을 float로 변환 : 기괴한?

그래서처럼 두 개의 열 배열을 :

for row in myarray[1:,]: 
    row[1]=float(row[1]) 

그리고이 :

for row in myarray[1:,]: 
    row[1]=row[1].astype(1) 

을 그리고이 :

myarray[1:,1] = map(float, myarray[1:,1]) 
Name Value 
Bob  4.56 
Sam  5.22 
Amy  1.22 

내가 이것을 시도

그리고 그들 모두는 무언가를 할 것 같다,하지만 난 한 번 확인하는 경우 :

type(myarray[9,1]) 

을 나는 그것이 구성하지 않는 한

<type> 'numpy.string_'> 
+0

http://stackoverflow.com/questions/9949427/how-to-change-the-dtype-of-a-numpy-recarray –

+1

: 당신이 있다면 혼합 유형의 데이터로 작업 할 때 [pandas] (http://pandas.pydata.org)를 살펴 보는 것이 좋습니다. 그것은 이미 사람들이 일반적으로 이름과 숫자 데이터 세트에서 수행하는 일종의 작업을 수행하기 위해 순수한 numpy를 얻기 위해 다시 구현해야하는 많은 도구를 통합합니다. – DSM

답변

6

NumPy와의 배열이 dtype이 있어야 얻을. 배열에 문자열이 있기 때문에 모두 문자열이어야합니다. 당신이 복잡한 dtype를 원하는 경우

, 당신은 그렇게 할 수 있습니다 a 지금 각 요소 유형 dtype의 튜플 인 1d structured array입니다

import numpy as np 
a = np.array([('Bob','4.56'), ('Sam','5.22'),('Amy', '1.22')], dtype = [('name','S3'),('val',float)]) 

하는 것으로.

사용자는 필드 이름을 사용하여 값을 액세스 할 수

In [21]: a = np.array([('Bob','4.56'), ('Sam','5.22'),('Amy', '1.22')], 
    ...:   dtype = [('name','S3'),('val',float)]) 

In [22]: a 
Out[22]: 
array([('Bob', 4.56), ('Sam', 5.22), ('Amy', 1.22)], 
     dtype=[('name', 'S3'), ('val', '<f8')]) 

In [23]: a['val'] 
Out[23]: array([ 4.56, 5.22, 1.22]) 

In [24]: a['name'] 
Out[24]: 
array(['Bob', 'Sam', 'Amy'], 
     dtype='|S3') 
+1

OP는 recarray를보고 싶어 할 수도 있습니다. 그러나 –

0

NumPy와 배열의 오브젝트 타입은 그 배열의 initialsation 결정된다. 나중에이를 변경하려면 해당 배열 내의 객체가 아니라 배열을 형 변환해야합니다.

myNewArray = myArray.asType(float) 

참고 : 다운 캐스팅에는 astcast 방법이 필요합니다. 자세한 내용 은 다음을 참조하십시오 제외
http://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html http://docs.scipy.org/doc/numpy/reference/generated/numpy.chararray.astype.html

+1

배열에는''Bob ''과 같은 문자열이있어서 float로 변환 할 수 없으므로'ValueError : string을 float으로 변환 할 수 없습니다 : 'Bob' ' – askewchan

관련 문제