我的问题是如何将前四列转换为浮点数,最后一列转换为字符串?更重要的是,我不能使用Pandas或CSV,而只能使用numpy。我将如何处理?我已经将列表转换为数组,并且当前显示:
'5.0,3.0,1.6,0.2,Iris-setosa'
我还需要添加适当的列标题,任何输入将不胜感激。 谢谢!
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)
答案 0 :(得分:1)
我认为这就是您要寻找的
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']
答案 1 :(得分:0)
AFAIK是numpy
的基本组成部分,它的数组是齐整的(每个元素的类型完全相同)。
如果您需要其他类型的额外行(例如标题)或一列(作为字符串的最后一列),则必须将它们保留在单独的numpy数组中。
您可以使用astype
方法将输入的数字部分从字符串转换为浮点型,例如:
string_col = traninig_data_array[:,4] # the last column
numbers = training_data_array[:,:4].astype(dtype=np.float64)