Làm thế nào để có được từLàm thế nào để chuyển đổi một mảng các chuỗi thành một mảng float trong numpy?
["1.1", "2.2", "3.2"]
để
[1.1, 2.2, 3.2]
trong NumPy?
Làm thế nào để có được từLàm thế nào để chuyển đổi một mảng các chuỗi thành một mảng float trong numpy?
["1.1", "2.2", "3.2"]
để
[1.1, 2.2, 3.2]
trong NumPy?
Vâng, nếu bạn đang đọc dữ liệu dưới dạng danh sách, chỉ cần thực hiện np.array(map(float, list_of_strings))
(hoặc tương đương, sử dụng danh sách hiểu). (Trong Python 3, bạn sẽ cần phải gọi list
trên giá trị map
trở lại nếu bạn sử dụng map
, vì map
trả về một iterator bây giờ.)
Tuy nhiên, nếu nó đã là một mảng NumPy của chuỗi, có một cách tốt hơn. Sử dụng astype()
.
import numpy as np
x = np.array(['1.1', '2.2', '3.3'])
y = x.astype(np.float)
Bạn có thể sử dụng này cũng
import numpy as np
x=np.array(['1.1', '2.2', '3.3'])
x=np.asfarray(x,float)
Nếu bạn có (hoặc tạo) một chuỗi duy nhất, bạn có thể sử dụng np.fromstring:
import numpy as np
x = ["1.1", "2.2", "3.2"]
x = ','.join(x)
x = np.fromstring(x, dtype=np.float, sep=',')
Note, x = ','.join(x)
biến mảng x thành chuỗi '1.1, 2.2, 3.2'
. Nếu bạn đọc một dòng từ một tệp txt, mỗi dòng sẽ là một chuỗi.
và nếu bạn có một mảng có chuỗi mà tôi muốn duy trì? như ['a', '1.1', '2.2', '3.3'] -> ['a', 1.1,2.2,3.3] – ePascoal
@MrMartin - Sau đó, sử dụng 'danh sách'. Numpy mảng được cố ý homogenously gõ. Nếu bạn thực sự muốn, bạn có thể sử dụng một mảng đối tượng (ví dụ 'np.array (['apple', 1.2, 1, {'b' = None, 'c' = object()}], dtype = object)') . Tuy nhiên, mảng đối tượng không có bất kỳ lợi thế đáng kể nào khi sử dụng danh sách. –