2

我想知道是否可以将 numpy.array 作为结构化数组中的数据类型。这是这样的想法:

import numpy

raw_data = [(1, numpy.array([1,2,3])), 
            (2, numpy.array([4,5,6])), 
            (3, numpy.array([7,8,9]))]

data = numpy.array(raw_data, dtype=[('num', float),
                                    ('arr', numpy.array)])

我有一个由整数和数组组成的元组列表,并希望将其转换为结构化数组。现在,Python 抱怨它不理解“numpy.array”数据类型。还有另一种引用数组数据类型的方法吗?

背后的动机是能够做以下事情:

print numpy.min(data['arr'], axis=0)
print numpy.min(data['arr'], axis=1)

和其他操作。

4

1 回答 1

3

是的,您可以在结构化数组中创建看起来像数组的复合字段;例如:

import numpy as np
raw_data = [(1, np.array([1,2,3])), 
            (2, np.array([4,5,6])), 
            (3, np.array([7,8,9]))]

tp = np.dtype([('id', int), ('arr', float, (3,))])

x = np.array(raw_data, dtype=tp)

结果如下所示:

>>> x
array([(1, [1.0, 2.0, 3.0]), (2, [4.0, 5.0, 6.0]), (3, [7.0, 8.0, 9.0])], 
      dtype=[('id', '<i8'), ('arr', '<f8', (3,))])
于 2016-09-21T17:10:12.613 回答