《利用python进行数据分析》学习笔记--Numpy(2)

---恢复内容开始---

1、通用函数——ufunc(数组函数)
numpy包里面有许多的简单函数

一元通用函数
np.abs---计算整数、浮点数、复数的绝对值
fabs---非负数的绝对值
sqrt---元素平方根
square---各元素的平方
exp---指数e的x次方
.
.
二元通用函数
add(加) subtract(减) multiply(乘) divide(除)
floor_divide(丢弃余数的整除)
power(A的B次方,A是第一个数组中的元素,B是第二个数组中的元素)
max(最大值) fmax(忽略NaN, 求最大值)Not a Number
min fmin
mod(求模,除法中的余数)
copysign (第二个数组中的值的符号复制给第一个数组中的值)
greater > greater_equal >= 均最终产生布尔型数组
less < less_equal<=
equal = not_equal !=

logical_and logical_or logical_xor 且 或 非

2、利用数组进行数据分析
首先,矢量化是指用数组表达式代替python的普通循环。
np.wehere用于根据一个数组产生新的数组

arr = np.random.randn(4,4)
arr
返回为
array([[ 0.61332224, -1.05117097, -0.84696004, -0.27137368],
       [ 0.61668765, -0.28892021, -0.3351271 ,  0.20804892],
       [ 1.38186831,  0.84161578,  0.34944678,  1.32217962],
       [-0.16234266, -1.39231172, -0.11728331,  0.63589553]])

np.where(arr>0,2,-2)
返回为
array([[ 2, -2, -2, -2],
       [ 2, -2, -2,  2],
       [ 2,  2,  2,  2],
       [-2, -2, -2,  2]])
另外where还可以嵌套使用
np.where(cond1&cond2,0
             np.where(cond1,1,
                           np.where(cond2,2,3)))

 

轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸。

 

  其他,数组统计函数为
std---标准差          var---方差
argmin---最小值索引
comsum---所有元素的累计和  
comprod---所有元素的累计积
sum函数可以对布尔型数组中的True值进行计数
arr = np.random.randn(50)
(arr > 0).sum()
返回值为
25

 

3、Numpy数组排序

一维数组可以直接sort就可以完成

arr = np.random.randn(5)
arr.sort
arr
返回值为
array([ 1.20801059, -0.1505957 , -0.1863048 ,  0.39777751, -0.67243568])

多维数组可利用将轴号传给sort进行排序

arr = np.random.randn(5,3)
arr
返回为
array([[-2.32465573, -0.8331435 , -0.25726053],
       [-0.74449026, -0.4840514 , -0.10254945],
       [-0.25760022, -0.01386315,  0.35368015],
       [ 0.33300364,  0.58523588,  1.87840659],
       [ 1.04487588,  1.53477932,  2.12223762]])
arr.sort(0) 返回为 
array([[
-0.25726053, -2.32465573, -0.8331435 ],
[
-0.10254945, -0.4840514 , -0.74449026],
[
0.35368015, -0.25760022, -0.01386315],
[
0.58523588, 1.87840659, 0.33300364],
[
1.53477932, 2.12223762, 1.04487588]])

sort(0)----按列方向排序

sort(1)----按行方向排序

排序最直接的应用就是找到一组数据的各分位数

arr = np.random.randn(1000)
arr.sort()
arr[int(0.5 * len(arr))]#中位数
返回值为
0.033359695414764835

4、numpy 的集合逻辑

numpy 的集合运算中最常用的就是np.unique,主要用来找出数组中的唯一值并且返回已完成排序的结果。

ints = np.array([3,4,5,4,5,3,4,3,5,6])
np.unique(ints)
返回为
array([3, 4, 5, 6])
字符型数组同样可以

其他的集合运算包括

unique(x)---计算x中的唯一元素,并有序返回

intersect1d(x,y)---计算x,y中的公共元素,并有序返回

union1d(x,y)---计算x,y的并集,并有序返回

in1d(x,y)---得到一个表示“x的元素是否包含于y”的布尔型数组

setdiff1d(x,y)---元素在x中且不在y中

setxor1d(x,y)---异或   在一个数组中,但不同时在两个数组中的元素

5、numpy的文件输入输出

写入数据 np.save
arr = np.arange(10) np.save('some_array',arr) 如果无扩展名,则会默认加.npy

读取数据 np.load

np.load('some_array.npy')

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

np.savez 能够将多个数组保存到一个压缩文件

各个数组以关键字参数传入

np.savez('arr_new',a = arr, b= arr)
arr1 = np.load('arr_new.npz')
arr1['a']
返回为
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

 

 

---恢复内容结束---

posted @ 2018-08-26 14:56  积水聚沙  阅读(270)  评论(0编辑  收藏  举报