08 - 从txt文档中读取Numpy数组|【布尔索引】
本帖最后由 不二如是 于 2020-2-15 11:12 编辑上一讲我们搞定二维数组的索引,切片和花式索引,对于多维数组 ix_ 方法完全可以通吃~
本讲来看如何从 txt 文档中读取 Numpy 数组。
先来把数据包准备好(nba 排名积分榜):
前面的操作我们都是通过“位置索引”来找到目标值。
布尔索引
通过下面的例子,我们先认识下布尔索引。
直接创建一个 0 到 99 的列表:
通过 for in 循环找到 %3==0 的所有项,保存到新列表中:
或者直接用我们讲过的列表生成式:
讲到现在,鱼油应该有种感觉:
**** Hidden Message *****
没有的话,看完应该也有了吧。
用 Numpy 方法建立一个数组:
arr = np.arange(100)
print(arr)
输出:
找出能被 3 整除的元素,按照现有的知识分析下,既然 Numpy 主张简洁。
之前通过 arr * 2 实现每项都乘以 2 。
那么直接写成:
arr % 3 == 0
试一试:
哎呦,输出的是 True 或 False,不错,离找出又近了一步。
看一下这样操作后结果的类型:
然后我们可以按照这个数组布尔值为线索,找出 True 的项。
添加代码:
arr
输出:
这不就找到结果啦?!
[] 中条件随便换,就会找到你需要的项。
调用本地文件
将上面的 txt 文件放在你记得的位置,为了方便,演示中放在和同级。
通过 Numpy 中的 genfromtxt('path/filename') 实现调用:
jfb = np.genfromtxt('nba.txt')
结果:
nan 是什么东西?
not a number 的缩写,因为 txt 中这些位置的条件是中文,而 Numpy 中默认是数字。
如果需要中文可以:
这样虽然变成中文,但里面的项值也成字符串了。
没关系,我们先把需要的胜率(04 列)和净胜(倒数 -2 )列拿出来:
arr2 = jfb[:,]
print(arr2)
输出:
去掉第一行:
清洗掉第一列的 % :
print (np.char.strip(arr3,'%'))
输出:
通过 np.char.strip() 移除数组元素头尾的 % 字符。
然后需要将 str 类型 转换为 float:
arr4 = (np.char.strip(arr3,'%')).astype('f8')
arr4
输出:
f8 就是 float64 的缩写。
这样就找到需要的数组了。
下一讲我们来讲深拷贝和浅拷贝
源代码:
如果有收获,别忘了评分{:10_281:} :
http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif
如果想看更多,请订阅 淘专辑(传送门)(不喜欢更要订阅{:10_297:} ) 本帖最后由 zltzlt 于 2020-2-14 15:30 编辑
学习 Numpy 令我快乐 NUmpy 令我快乐 NUmpy 令我快乐 NUmpy 令我快乐 NUmpy 令我快乐 NUmpy 令我快乐 NUmpy 令我快乐 催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更 强,太有用了 NUmpy 令我快乐 NUmpy 令我快乐 NUmpy 令我快乐 NUmpy 令我快乐 NUmpy 令我快乐 NUmpy 令我快乐 本帖最后由 小羊趴在云朵上 于 2021-11-29 15:49 编辑
我在运行上述程序时,总是出现错误,不知道哪里有问题
UnicodeDecodeError这样的错误(图片不知道咋上传^_^) 小羊趴在云朵上 发表于 2021-11-29 15:46
我在运行上述程序时,总是出现错误,不知道哪里有问题
UnicodeDecodeError这样的错误(图片不知道咋上传^_ ...
我会啦,嘻嘻嘻 这一节终于学会了 NUmpy 令我快乐
页:
[1]