2016-09-21 12 views
0

Мне было интересно, возможно ли иметь numpy.array как тип данных в структурированном массиве. Это идея: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) 

и других операций.

ответ

1

Да, вы можете создавать сложные поля, которые выглядят как массивы внутри структурированного массива; например:

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,))]) 
+0

Ницца! Спасибо за быстрый ответ! – mommermi