个位大佬,python读取文本数据到二维数组,有什么好的方法吗

flying_music 2021-05-24 07:36:58

data = []
with open('./data/housing.csv', 'r') as f:
for idata in f:
data.append(re.sub(' +', ' ', idata.strip()).split(" ")) #多个空格分隔的浮点数
data = np.array(data)

X_train, Y_train = data[:,5], data[:,len(data[1])-1]

floatArr = []
for i in X_train:
floatArr.append(float(i))
X_train = floatArr

floatArr = []
for i in Y_train:
floatArr.append(float(i))
Y_train = floatArr

这样也能实现,但是感觉很low,跟C语言差不多(之前是学C的,刚转python),python不是号称很优雅么,这如何优雅实现呢?
...全文
236 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT.BOB 2021-05-25
  • 打赏
  • 举报
回复
不太清楚你的数据是怎样的,可以贴一部分数据出来看看,Python 里面 numpy 模块可以处理二维数组,numpy.array([[1, 2], [3, 4]]) 就是一个二维数组。
chuifengde 2021-05-25
  • 打赏
  • 举报
回复
import pandas pandas.read_csv(.....)
flying_music 2021-05-25
  • 打赏
  • 举报
回复
引用 1 楼 TRHX • 鲍勃 的回复:
不太清楚你的数据是怎样的,可以贴一部分数据出来看看,Python 里面 numpy 模块可以处理二维数组,numpy.array([[1, 2], [3, 4]]) 就是一个二维数组。
数据就是不定个空格分隔的浮点数,想知道有没有封装好的库可以直接读的,现在还要处理好多细节(一是分隔符类型,是空格还是TAB还是多个空格,句尾的换行符,这些都要自己考虑并处理 二是类型的问题,默认读到的类型是str类型的,还得挨个转换成float,感觉比较费劲)

 0.00632  18.00   2.310  0  0.5380  6.5750  65.20  4.0900   1  296.0  15.30 396.90   4.98  24.00
 0.02731   0.00   7.070  0  0.4690  6.4210  78.90  4.9671   2  242.0  17.80 396.90   9.14  21.60
 0.02729   0.00   7.070  0  0.4690  7.1850  61.10  4.9671   2  242.0  17.80 392.83   4.03  34.70
 0.03237   0.00   2.180  0  0.4580  6.9980  45.80  6.0622   3  222.0  18.70 394.63   2.94  33.40
 0.06905   0.00   2.180  0  0.4580  7.1470  54.20  6.0622   3  222.0  18.70 396.90   5.33  36.20
 0.02985   0.00   2.180  0  0.4580  6.4300  58.70  6.0622   3  222.0  18.70 394.12   5.21  28.70
 0.08829  12.50   7.870  0  0.5240  6.0120  66.60  5.5605   5  311.0  15.20 395.60  12.43  22.90
 0.14455  12.50   7.870  0  0.5240  6.1720  96.10  5.9505   5  311.0  15.20 396.90  19.15  27.10
 0.21124  12.50   7.870  0  0.5240  5.6310 100.00  6.0821   5  311.0  15.20 386.63  29.93  16.50
 0.17004  12.50   7.870  0  0.5240  6.0040  85.90  6.5921   5  311.0  15.20 386.71  17.10  18.90
 0.22489  12.50   7.870  0  0.5240  6.3770  94.30  6.3467   5  311.0  15.20 392.52  20.45  15.00
 0.11747  12.50   7.870  0  0.5240  6.0090  82.90  6.2267   5  311.0  15.20 396.90  13.27  18.90
 0.09378  12.50   7.870  0  0.5240  5.8890  39.00  5.4509   5  311.0  15.20 390.50  15.71  21.70
 0.62976   0.00   8.140  0  0.5380  5.9490  61.80  4.7075   4  307.0  21.00 396.90   8.26  20.40
 0.63796   0.00   8.140  0  0.5380  6.0960  84.50  4.4619   4  307.0  21.00 380.02  10.26  18.20
 0.62739   0.00   8.140  0  0.5380  5.8340  56.50  4.4986   4  307.0  21.00 395.62   8.47  19.90
IT.BOB 2021-05-25
  • 打赏
  • 举报
回复
和三楼说的一样,可以用 pandas 直接读取,结果就是二维数组
import pandas as pd

obj = pd.read_csv('test.csv')
print(obj.shape)

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧