从一组对象中提取的有效方法

时间:2012-05-05 08:52:25

标签: python arrays multidimensional-array numpy

我在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循环?

1 个答案:

答案 0 :(得分:1)

尝试将坐标提取到python坐标列表中,并一次性将其转换为numpy数组。如果标签值从1到nnod是连续的,那么就像这样简单:

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

使用生成器(这可以让你避免创建中间数组)会更好一些,但是numpy只能使用numpy.fromiter()从生成器创建一维数组。

相关问题