我在编程方面还很陌生,所以如果这个问题太简单了,我会提前道歉,但是我在互联网上到处都看过,我仍然不明白。
我想使用虹膜,显然我首先需要将其拆分。
def ri(filename):
linelist=list()
with open (filename) as f:
for line in f:
linelist.append(line)
return linelist
data=ri("iris.data")
print(data)
这是我的初衷,但是我遇到的问题是这段代码给了我一个字符串,但是我需要一个数据点列表。 1鸢尾花的例子是5.7,3.8,1.7,0.3,鸢尾花,但它看起来必须像[[5.7],[3.8],[1.7],[0.3],[1]]。
我搜索了所有内容,但找不到任何内容。
提前感谢
编辑:文件看起来像这样
5.1,3.5,1.4,0.2,鸢尾花
4.9,3.0,1.4,0.2,鸢尾花
4.7,3.2,1.3,0.2,鸢尾花
4.6,3.1,1.5,0.2,鸢尾花
5.0,3.6,1.4,0.2,鸢尾花
5.4,3.9,1.7,0.4,鸢尾花
4.6,3.4,1.4,0.3,鸢尾花
5.0,3.4,1.5,0.2,鸢尾花
我的工作代码是这样:但是显然不是我想要的工作
def read_iris(filename):
f=open("iris.data", "r")
if f.mode == 'r':
x =f.readlines()
return x
data = read_iris("iris.data")
print(data)
>> ['5.1,3.5,1.4,0.2,Iris-setosa\n', '4.9,3.0,1.4,0.2,Iris-setosa\n', '4.7,3.2,1.3,0.2,Iris-setosa\n', '4.6,3.1,1.5,0.2,Iris-setosa\n', '5.0,3.6,1.4,0.2,Iris-setosa\n', '5.4,3.9,1.7,0.4,Iris-setosa\n', '4.6,3.4,1.4,0.3,Iris-setosa\n', '5.0,3.4,1.5,0.2,Iris-setosa\n',
要获得想要的结果,您可以使用此脚本:
def ri(filename):
linelist=list()
with open (filename) as f:
for line in f:
row_list = list()
for element in line.split(','):
element_list = list()
if element.isalpha():
element_list.append(element)
row_list.append(element_list)
else:
element_list.append(float(element))
row_list.append(element_list)
linelist.append(row_list)
return linelist
data=ri("iris.data")
print(data)
您是否考虑过使用pandas
?如果使用表格数据,则没有必要手动进行。
import pandas as pd
df = pd.read_csv("iris.data", header=None)
print(df[df.columns[:-1]].values)
[[5.1 3.5 1.4 0.2]
[4.9 3. 1.4 0.2]
[4.7 3.2 1.3 0.2]
[4.6 3.1 1.5 0.2]
[5. 3.6 1.4 0.2]
[5.4 3.9 1.7 0.4]
[4.6 3.4 1.4 0.3]
[5. 3.4 1.5 0.2]]