首页 > 解决方案 > 将列表转换为数组后创建列

问题描述

我的问题是如何将前四列转换为浮点数,将最后一列转换为字符串?更重要的是我不能使用 Pandas 或 CSV,我只能使用 numpy。我该怎么办?我已将列表转换为数组,目前显示:

'5.0,3.0,1.6,0.2,鸢尾花'

我还需要添加正确的列标题,任何输入都将不胜感激。谢谢!

import numpy as np

training_data = open("C:\Users\Angel\Downloads\iris-training-data.csv")
training_data_list = []

for elements in training_data:
    training_data_list.append(elements)


training_data_array = np.array(training_data_list)

print "The shape is {}\n".format(training_data_array.shape)

print "The visual array is: {}".format(training_data_array)

标签: pythonnumpy

解决方案


我想这就是你要找的

import csv
with open('path_to_csv', newline='') as file:
data = csv.reader(file, delimiter=' ')
for row in data:
    row = row[0].split(',')
    r = [float(item) for item in row[:4]]
    r.append(str(row[4]))
    print(r)

这是我的输出,但我运行了 9 列而不是你的 5 列。但它是相同的数据集。我发布的代码对你有用。

[7.2, 0.805555556, 3.0, 0.416666667, 5.8, 0.813559322, 1.6, 0.625, 'virginica']
[7.4, 0.861111111, 2.8, 0.333333333, 6.1, 0.86440678, 1.9, 0.75, 'virginica']
[7.9, 0.9999, 3.8, 0.75, 6.4, 0.915254237, 2.0, 0.791666667, 'virginica']
[6.4, 0.583333333, 2.8, 0.333333333, 5.6, 0.779661017, 2.2, 0.875, 'virginica']
[6.3, 0.555555556, 2.8, 0.333333333, 5.1, 0.694915254, 1.5, 0.583333333, 'virginica']

推荐阅读