1

選択した行のnumpy構造化配列の1つのフィールドを変更する簡単な方法を探しています。これが私のSWEです:

import numpy as np
dt=np.dtype([('name',np.unicode,80),('x',np.float),('y',np.float)])
a=np.array( [('a',0.,0.),('b',0.,0.),('c',0.,0.) ],dtype=dt)
b=a.copy()
a[a['name']=='a']['x']=1
print a==b # return [ True  True  True]

この例では、a==b結果が返さ[False True True]れます。実際には、「名前」フィールドから配列の行を選択し、その 1 つのフィールド (ここでは「x」) の値を変更したいと考えています。

4

1 に答える 1

2

答えが見つかりました… ポイントはフィールドとマスクの位置です。マスクされた配列のフィールドを探すのではなく、フィールド列にマスクを適用する必要があります。

a['x'][a['name']=='a']=1
print a==b # returns [False  True  True]
于 2016-04-18T12:04:11.433 に答える