当我尝试按以下方式加载UCI鲍鱼数据文件时:
dattyp = [('sex',object),('length',float),('diameter',float),('height',float),('whole weight',float),('shucked weight',float),('viscera weight',float),('shell weight',float),('rings',int)]
abalone_data = np.loadtxt('C:/path/abalone.dat',dtype = dattyp, delimiter = ',')
print(abalone_data.shape)
print(abalone_data[0])
>>(4177,)
('M', 0.455, 0.365, 0.095, 0.514, 0.2245, 0.101, 0.15, 15)
Abalone_data
是一个具有1列而不是9列的数组。稍后,当我想将其他数据添加为额外的列时,这给我带来了问题。有什么方法可以将这些数据转换为(4177, 9)
矩阵,在那里我可以进行列等的常规添加?
谢谢!
答案 0 :(得分:2)
您可以使用熊猫:
import pandas as pd
abalone_data = pd.read_csv('C:/path/abalone.dat', header=None).values
abalone_data.shape
输出:
(4177, 9)
答案 1 :(得分:2)
您可以将unpack参数添加到numpy.loadtxt()
中。然后,您可以numpy.transpose()新创建的numpy数组来获得所需的数组形状。
import numpy as np
dattyp = [('sex',object),('length',float),('diameter',float),('height',float),('whole weight',float),('shucked weight',float),('viscera weight',float),('shell weight',float),('rings',int)]
abalone_data = np.loadtxt('C:/path/abalone.dat',dtype = dattyp, delimiter = ',', unpack=True)
abalone_data = np.array((abalone_data)).transpose()
print(abalone_data.shape)
退出:
(4177, 9)
来自文档:
解压:布尔型,可选
如果为True,则对返回的数组进行转置,以使参数可以为 使用x,y,z = loadtxt(...)解压缩。当用于结构化 数据类型,则为每个字段返回数组。默认值为False。