马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 不二如是 于 2020-2-15 11:12 编辑
上一讲我们搞定二维数组的索引,切片和花式索引,对于多维数组 ix_ 方法完全可以通吃~
本讲来看如何从 txt 文档中读取 Numpy 数组。
先来把数据包准备好(nba 排名积分榜):
nba.zip
(595 Bytes, 下载次数: 30)
前面的操作我们都是通过“位置索引”来找到目标值。
布尔索引
通过下面的例子,我们先认识下布尔索引。
直接创建一个 0 到 99 的列表:
通过 for in 循环找到 %3==0 的所有项,保存到新列表中:
或者直接用我们讲过的列表生成式:
讲到现在,鱼油应该有种感觉:
没有的话,看完应该也有了吧。
用 Numpy 方法建立一个数组:
arr = np.arange(100)
print(arr)
输出:
找出能被 3 整除的元素,按照现有的知识分析下,既然 Numpy 主张简洁。
之前通过 arr * 2 实现每项都乘以 2 。
那么直接写成:
试一试:
哎呦,输出的是 True 或 False,不错,离找出又近了一步。
看一下这样操作后结果的类型:
然后我们可以按照这个数组布尔值为线索,找出 True 的项。
添加代码:
输出:
这不就找到结果啦?!
[] 中条件随便换,就会找到你需要的项。
调用本地文件
将上面的 txt 文件放在你记得的位置,为了方便,演示中放在和同级。
通过 Numpy 中的 genfromtxt('path/filename') 实现调用:
jfb = np.genfromtxt('nba.txt')
结果:
nan 是什么东西?
not a number 的缩写,因为 txt 中这些位置的条件是中文,而 Numpy 中默认是数字。
如果需要中文可以:
这样虽然变成中文,但里面的项值也成字符串了。
没关系,我们先把需要的胜率(04 列)和净胜(倒数 -2 )列拿出来:
arr2 = jfb[:,[4,-2]]
print(arr2)
输出:
去掉第一行:
清洗掉第一列的 % :
print (np.char.strip(arr3,'%'))
输出:
通过 np.char.strip() 移除数组元素头尾的 % 字符。
然后需要将 str 类型 转换为 float:
arr4 = (np.char.strip(arr3,'%')).astype('f8')
arr4
输出:
f8 就是 float64 的缩写。
这样就找到需要的数组了。
下一讲我们来讲深拷贝和浅拷贝
源代码:
08ImportTxt.zip
(433 Bytes, 下载次数: 1, 售价: 4 鱼币)
如果有收获,别忘了评分 :
如果想看更多,请订阅 淘专辑( 传送门)( 不喜欢更要订阅 ) |