Дано: Numpy массива, созданного из строки:Использование строк в формате Numpy массив
xy = np.array('4.9 3.5; 5.1 3.2; 4.7 3.1; 4.6 3.0; 5.0 5.4')
Во-первых: существует ли определенный имя для этой конструкции?
Вот тип данных:
In [25]: xy
Out[25]:
array('4.9 3.5; 5.1 3.2; 4.7 3.1; 4.6 3.0; 5.0 5.4',
dtype='|S43')
Что является|S43
..
Так достаточно хорошо с внутренностей .. Так вот реальный вопрос: как мы использовать в сгенерированный массив:
In [31]: cov(xy)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-31-6d999a60c1da> in <module>()
----> 1 cov(xy)
..
TypeError: cannot perform reduce with flexible type
Это результат контрастирует с более стандартным использованием np.array
:
In [33]: xy = np.array([[4.9, 3.5],[5.1, 3.2],[ 4.7, 3.1],[ 4.6, 3.0],[ 5.0, 5.4]], dtype=float)
In [35]: cov(xy)
Out[35]:
array([[ 0.98 , 1.33 , 1.12 , 1.12 , -0.28 ],
[ 1.33 , 1.805, 1.52 , 1.52 , -0.38 ],
[ 1.12 , 1.52 , 1.28 , 1.28 , -0.32 ],
[ 1.12 , 1.52 , 1.28 , 1.28 , -0.32 ],
[-0.28 , -0.38 , -0.32 , -0.32 , 0.08 ]])
Итак .. как использовать строковой numpy.array
синтаксис, чтобы получить тот же результат?
Обновление My bad here: Я смешивал numpy.array
с numpy.matrix
. Последний делает поддерживает строгий синтаксис. См. Мой ответ ниже.
Параметр '| S43' означает, что ваш тип является строка с 43 символов – Dekel
' DTYPE = '| S43'' указывает на то, что массив является 'string' массив длины' 43' (она имеет 43 символов) , Другими словами, он хранит все как строку, а не как числа. – James
Вы не можете вычислить ковариацию строки. Вы должны использовать числа (int, float ...) для вычисления. –