Yanıtlar:
Verileri bir liste halinde okuyorsanız, sadece yapın np.array(map(float, list_of_strings))
(veya eşdeğer olarak, bir liste anlama kullanın). (Python 3, aramak gerekir list
üzerinde map
kullanırsanız dönüş değeri map
beri, map
şimdi döner bir yineleyici.)
Ancak, zaten uyuşmuş bir dizi diziyse, daha iyi bir yol var. Kullanın astype()
.
import numpy as np
x = np.array(['1.1', '2.2', '3.3'])
y = x.astype(np.float)
list
. Numpy dizileri kasıtlı olarak homojen olarak yazılmıştır. Gerçekten istiyorsanız, bir nesne dizisi kullanabilirsiniz (örneğin np.array(['apple', 1.2, 1, {'b'=None, 'c'=object()}], dtype=object)
). Bununla birlikte, nesne dizilerinin bir liste kullanmaya göre önemli bir avantajı yoktur.
Bunu da kullanabilirsin
import numpy as np
x=np.array(['1.1', '2.2', '3.3'])
x=np.asfarray(x,float)
Başka bir seçenek de numpy.asarray olabilir :
import numpy as np
a = ["1.1", "2.2", "3.2"]
b = np.asarray(a, dtype=np.float64, order='C')
Python 2 * için:
print a, type(a), type(a[0])
print b, type(b), type(b[0])
sonuçlanan:
['1.1', '2.2', '3.2'] <type 'list'> <type 'str'>
[1.1 2.2 3.2] <type 'numpy.ndarray'> <type 'numpy.float64'>
Tek bir dizeniz varsa (veya oluşturduysanız), np.fromstring'i kullanabilirsiniz :
import numpy as np
x = ["1.1", "2.2", "3.2"]
x = ','.join(x)
x = np.fromstring( x, dtype=np.float, sep=',' )
Not, x = ','.join(x)
x dizisini dizeye dönüştürür '1.1, 2.2, 3.2'
. Bir txt dosyasından bir satır okursanız, her satır zaten bir dizge olacaktır.