Когда я делаю массив numpy из своих данных, я получаю (как и ожидалось) список списков, но когда я объявляю типы данных для них, я получаю то, что представляется списком кортежей, что бесполезно. Это проблема, потому что numpy кажется, что первый массив представляет собой 2D-массив, а второй - 1D-массив (он дает .shape
как (9,)
.Я хотел бы иметь возможность поддерживать удобство использования 2D-массива, но давать это типы данных, как показано ниже. есть ли способ сделать это?Как я могу заставить Numpy дать массив списков вместо кортежей?
>>> np.array(mtest)
array([[',', '7.174707364110744'],
['the', '5.260736372733581'],
['.', '2.630943297842565'],
['of', '2.505952403774265'],
['and', '2.309647686709941'],
['a', '1.7517895552087845'],
['to', '1.7414375486448457'],
[';', '1.5612359529022042']],
dtype='<U18')
>>> np.array(mtest, dtype=[('token', np.unicode_, 64),('perc', np.float)])
array([(',', 7.174707364110744), ('the', 5.260736372733581),
('.', 2.630943297842565), ('of', 2.505952403774265),
('and', 2.309647686709941), ('a', 1.7517895552087845),
('to', 1.7414375486448457), (';', 1.5612359529022042)],
dtype=[('token', '<U64'), ('perc', '<f8')])
Что вы здесь такое ['record array'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.recarray.html), и так оно отображается. Обратите внимание, что первый из них не является списком списков, это массив массивов. –
Я знаю их как * структурированные массивы * (нетривиальный dtype), @AshwiniChaudhary. Массивы записи AFAIK являются подклассом 'ndarrays'. Оба могут иметь тривиальные и нетривиальные типы. Разница для массивов записей - это возможность доступа к полям как членам: 'arr.field1' является 'arr ['field1']' – sebix