1

私はPythonでオブジェクトの配列を持っています:

meshnodearray = ['MeshNode object', 'MeshNode object', 'MeshNode object', ...]

たとえば、最初の「MeshNode オブジェクト」は次のとおりです。

({'coordinates': (15.08, 273.01, 322.61), 'instanceName': None, 'label': 1})

次のような座標の配列を作成する必要があります。

NODEcoo = np.zeros((nnod,3),dtype='float64')
for i in meshnodearray:
    NODEcoo[i.label-1,0:] = np.array(i.coordinates)

大きな配列の場合、これは遅くなります。おそらくforループなしで、これを行うより効率的な方法はありますか?

4

1 に答える 1

1

座標を座標の python リストに抽出し、一度に numpy 配列に変換してみてください。ラベルの値が 1 から まで連続している場合は、次nnodのように簡単です。

coords = [ n['coordinates'] for n in meshnodearray ]
NODEcoo = np.array(coords)

ジェネレーターでこれを行う方がいくらか良いでしょう (中間配列の作成を避けることができます) が、numpy はジェネレーターから 1 次元配列しか作成できませんnumpy.fromiter()

于 2012-05-05T14:56:39.947 に答える