python numpy模块学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36783389/article/details/82749466

看python数据分析项目发现了一个小技巧

import numpy as np
data_arr = np.random.rand(3,3)
print(data_arr)
year_arr = np.array([[2000, 2001, 2000],
                     [2005, 2002, 2009],
                     [2001, 2003, 2010]])
filtered_arr = data_arr[year_arr >= 2010]
print (filtered_arr)

看上面这段代码首先它引入了numpy模块然后创建了一个data_arr的3行3列的维数组对象

这个多维数组的对象与下面year_arr多维数组对象的维度是一致的

下面有一行代码可能会让人感到费解

[year_arr == 2010] 这种对象与常量比较的方法我在java或者C++中都没有见过初看有点懵

其实它是内部帮你做了一个判断,将year_arr中的元素满足 >= 2010的下标在data_arr中对应的值都返回

了回来组成了一个新的numpy.ndarray对象然后这个对象就被赋值给了filtered_arr

下面贴出运行结果大家一看肯定就明白了

[[0.98282246 0.23384097 0.81657954]
 [0.11019522 0.92868591 0.37159415]
 [0.30358206 0.71143007 0.00779396]]
[0.00779396]

第一个长的括号是原来的data_arr,因为year_arr中满足元素>=2010的下标只有最后一个

所以最后filtered_arr中也只有data_arr中最后一个下标所对应的值

扫描二维码关注公众号,回复: 3697855 查看本文章

这个方法看起来很基类但是在分析数据时其实很有用

举个例子你按照顺序取出了csv文件中的month和票数poll并且它们都各自处理完毕成为了一个ndarray对象

很显然poll数组里没有month属性,但是由于你是按照顺序抓取的,所以你判断poll[month==1]

就可以获取1月各个地区的投票数(因为month==1对应的那些下标与poll的下标是重叠的,因为它们是按顺序抓取的)

所以这个方法就可以很方便的去做一个简单的数据分析

猜你喜欢

转载自blog.csdn.net/qq_36783389/article/details/82749466