'[1,2,3,4]'
- строка, но [1,2,3,4]
- список. В первом примере вы создаете массив numpy
из строки, которую numpy не может обработать. Но это может обработать последнее.
Если у вас действительно нет выбора не использовать ничего, кроме строки, и вы уверены, что строка будет синтаксически правильным списком Python, тогда вы можете использовать метод exec
для создания массива numpy из этого:
>>> import numpy as np
>>> exec('arr = np.array({})'.format('[1,2,3,4]'))
>>> arr
array([1, 2, 3, 4])
>>> arr.shape
(4,)
>>> arr.size
4
>>> print(arr[0])
1
>>> arr.dtype
dtype('int64')
Поскольку строка содержит целые числа вместо чисел с плавающей запятой, numpy создаст массив с dtype int64
, но если вы хотите его в float64
, вы можете сделать следующее для создания массива:
>>> import numpy as np
>>> exec('arr = np.array({}).astype(np.float64)'.format('[1,2,3,4]'))
>>> arr
array([1., 2., 3., 4.])
>>> arr.dtype
dtype('float64')
И это создаст массив с типом float64
.