python - 如何将csv文件中的列表转换为numpy数组
问题描述
我有一个 csv 文件,如下所示
[0.037621960043907166, 0.04622473940253258, 0.9161532521247864]
[0.030109738931059837, 0.03261643648147583, 0.9372738003730774]
[0.030109738931059837, 0.03261643648147583, 0.9372738003730774]
我需要将其转换为 numpy 数组。如果我使用下面的代码
data = genfromtxt(file, delimiter=',', encoding="utf8")
我进入nan
输出。
如果我这样做
np.genfromtxt (file, encoding=None, dtype = None)
它无法删除列表的开始和结束括号,并输出如下
array = ([['[0.037621960043907166,', '0.04622473940253258,',
'0.9161532521247864]'],
['[0.030109738931059837,', '0.03261643648147583,',
'0.9372738003730774]'],
['[0.030109738931059837,', '0.03261643648147583,',
'0.9372738003730774]']], dtype='<U22')
预期的输出是
array = ([['0.037621960043907166,', '0.04622473940253258,',
'0.9161532521247864'],
['0.030109738931059837,', '0.03261643648147583,',
'0.9372738003730774'],
['0.030109738931059837,', '0.03261643648147583,',
'0.9372738003730774']], dtype='<U22')
如何获得预期的输出?似乎我需要在应用 numpy 操作之前先删除括号。有什么建议吗?
解决方案
只要你知道内容的格式,我想一个简单的切片就可以了
import numpy as np
tmp = open('tmp', 'r').readlines()
tmp = np.array([[float(num) for num in item[1:-2].split(',')] for item in tmp])
推荐阅读
- python - 在 python 中找不到 c++ 扩展库
- python - Trying to run TensorBoard for the First Time
- javascript - 使用二进制搜索将字符串插入排序的字符串数组
- javascript - 如何对包含对应该首先出现的其他对象的引用的对象数组进行排序?
- python - 在我的程序中出现类型错误(python 初学者)
- javascript - 如何对 NeDB 数据库进行排序以获取响应?(Javascript 回调/箭头函数语法混乱)
- android - 无效的自定义 PageKeyedDataSource 使回收器视图跳转
- asp.net-mvc - 使用默认 {controller}/{id} 路由和 {controller}/{action}/{id} 路由时与路由冲突
- r - 在ggplot2中的geoms上均匀地应用抖动
- r - 检查字符串变量是否是R中另一个变量的子集