Что удивительного. Два массива, как показано, содержат строки:
In [318]: array1[0]
Out[318]: array(['O', '0.919775', '3.7032729999999994', '6.436484'], dtype='<U32')
In [319]: array1[0][1]
Out[319]: '0.919775'
In [320]: array1[0][1]<cell_a
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-320-73400e758be3> in <module>
----> 1 array1[0][1]<cell_a
TypeError: '<' not supported between instances of 'numpy.str_' and 'float'
Python не может сравнивать строку с числом!
Кстати, в numpy
мы предпочитаем обращаться к элементам с :
In [321]: array1[0, 1]
Out[321]: '0.919775'
здесь использование [0][1]
также работает, но синтаксис [0,1]
более ясный и надежный.
Когда вы создаете массив из списка, который содержит строки, весь массив имеет строковый тип d.
Массив без строкового столбца можно сделать плавающим:
In [322]: array1[:,1:]
Out[322]:
array([['0.919775', '3.7032729999999994', '6.436484'],
['3.295445', '0.22673200000000016', '8.697384'],
['5.553644', '2.607080999999999', '4.798966999999999']],
dtype='<U32')
In [323]: arr = array1[:,1:].astype(float)
In [324]: arr
Out[324]:
array([[0.919775, 3.703273, 6.436484],
[3.295445, 0.226732, 8.697384],
[5.553644, 2.607081, 4.798967]])
In [325]: arr[0,0]<=cell_a
Out[325]: True