版权声明:本文为博主原创文章,未经博主允许不得转载。 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中最后一个下标所对应的值
这个方法看起来很基类但是在分析数据时其实很有用
举个例子你按照顺序取出了csv文件中的month和票数poll并且它们都各自处理完毕成为了一个ndarray对象
很显然poll数组里没有month属性,但是由于你是按照顺序抓取的,所以你判断poll[month==1]
就可以获取1月各个地区的投票数(因为month==1对应的那些下标与poll的下标是重叠的,因为它们是按顺序抓取的)
所以这个方法就可以很方便的去做一个简单的数据分析