5

したがって、これ非常に簡単なことですが、何らかの理由で、文字列の配列を浮動小数点数の配列に変換するために行っていることは何も機能していません。

次のように、2列の配列があります。

Name    Value
Bob     4.56
Sam     5.22
Amy     1.22

私はこれを試します:

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])

そして、それらはすべて何かをしているように見えますが、再確認すると:

type(myarray[9,1])

私は得る

<type> 'numpy.string_'>
4

2 に答える 2

7

Numpy 配列dtypeは、構造化されていない限り、1 つ持つ必要があります。配列にはいくつかの文字列があるため、それらはすべて文字列でなければなりません。

複雑なが必要なdtype場合は、次のようにします。

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

aが1 次元の構造化配列になり、各要素が type のタプルであることに注意してくださいdtype

フィールド名を使用して値にアクセスできます。

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')
于 2013-03-31T22:41:50.973 に答える
0

numpy 配列内のオブジェクトの型は、その配列の初期化時に決定されます。後で変更する場合は、その配列内のオブジェクトではなく、配列をキャストする必要があります。

myNewArray = myArray.asType(float)

注: アップキャストは可能ですが、ダウンキャストには astype メソッドが必要です。詳細については、http:
//docs.scipy.org/doc/numpy/reference/generated/numpy.array.html http://docs.scipy.org/doc/numpy/reference/generated/numpy.chararray を参照してください。 astype.html

于 2013-03-31T22:47:32.553 に答える