2010-10-06 97 views

Trả lời

106

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) 
+0

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

+4

@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. –

1

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) 
1

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.

Các vấn đề liên quan