[英]Convert a list of strings into ndarray of floats
我有如下字符串列表:
['0.20115899', '0.111678', '0.10674', '0.05564842', '-0.09271969', '-0.02292056', '-0.04057575', '0.2019901', '-0.05368654', '-0.1708179']
['-2.17182860e-01', '-1.04081273e-01', '7.75325894e-02', '7.51972795e-02', '-7.11168349e-02', '-4.75254208e-02', '-2.94160955e-02']
etc.
etc.
列表的名稱是data_det
。 我做了以下工作來找到類型:
for item in data_det:
print(type(item))
for it in item:
print(type(it))
我有
<class 'list'>
<class 'str'>
<class 'str'>
<class 'str'>
<class 'str'>
etc.
我試圖將其轉換為ndarray
。
data_det = numpy.asarray(data_det, dtype=np.float)
但是得到了錯誤:
return array(a, dtype, copy=False, order=order)
ValueError: setting an array element with a sequence.
理想情況下,我希望將每個值都轉換為浮點型。 如何做到這一點?
嘗試這個 :
import numpy as np
l1 = ['0.20115899', '0.111678', '0.10674', '0.05564842', '-0.09271969', '-0.02292056', '-0.04057575', '0.2019901', '-0.05368654', '-0.1708179']
l2 = ['-2.17182860e-01', '-1.04081273e-01', '7.75325894e-02', '7.51972795e-02', '-7.11168349e-02', '-4.75254208e-02', '-2.94160955e-02']
l1 = np.array([float(i) for i in l1])
l2 = np.array([float(i) for i in l2])
print(l1.dtype)
輸出 :
float64
關於我的評論和您的評論。 既然您說過,您的數據就是列表格式的列表 。 您需要遍歷列表。
您可以使用np.float
設置傳入浮點類型的值。 使用dtype=object
設置任意類型。
import numpy as np
# Traverse list of list
def traverse(o, tree_types=(list, tuple)):
if isinstance(o, tree_types):
for value in o:
for subvalue in traverse(value, tree_types):
yield subvalue
else:
yield o
# Your data
values = [('0.20115899', '0.111678'), ('0.211282', '0.342342')]
# Traverse data list of list
values = traverse(values)
# Loop through new values
x = np.asarray([float(value) for value in values], np.float)
# Output
print(x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.