python数据分析--Numpy
Numpy,全称Numeric Python,是一个开源的Python科学计算库。
最近做项目老是用到,感觉还是挺简单的,决定了解一下,依然是看的莫烦python教学视频,这篇文章是从中总结的知识要点。
1,array的创建
import numpy as np #创建array 利用array把list转变为array a = np.array([[1,22,3],[1,4,5]]) print(a)
输出结果是生成了一个2维矩阵。数字之间是没有逗号的,这是array和list之间的最大差别。
而且还可以自定义array中元素的类型,默认是int64位或者32位,若要改动,就是np.array([2,23,24],dtype=int16)。
还可以生成都为1,0或者空的array。
b = np.zeros((3,4))#三行四列 c = np.ones((3,4)) d = np.empty((2,3))#空矩阵的意思是生成元素非常接近于0
利用arange创建array也是很方便的,arange和range是类似的用法。
e = np.arange(12,20,2)#12到19,步长为2的array f = np.arange(12).reshape(3,4)#reshape的作用是将生成的一维array形状变化为3行四列 g = np.linspace(1,10,4)#1-10分成4段
运行结果如下:
np.array(4),运行结果就是0-3,步长为1的数组。
查看array的属性也很简单。
array.ndim
array.shape
array.size
分别是维度,形状,元素个数。
a = np.random.random((2,4))#随机生成的2行4列的array,每个元素都在0-1之间。
2.numpy中的基本运算
加减都一样,这里不提了。乘方的话不同于其他语言的^2,^要用**来代替。
关于乘法,用*都是对应元素相乘,若要用矩阵乘法,应该为:np.dot(a,b) or a.dot(b)
三角运算:np.sin(a), cos,tan同理。
判断大小:print(A<5)#判断array中各个元素是否小于5。返回值是布尔值。
计算和:np.sum(a)
计算最大值,最小值:
np.min(a)
np.max(a)
返回最大值索引:np.argmax(a)
排序:np.sort(a)
转置:np.transpose(a)
a.T也可以
将某一区间的数留下:np.clip(A,5,9)#把array A中的小于5的数变成5,大于9的数变成9。
还有mean,median,cumsum(累加和),diff(累差)等,都是一样的方式。
如果只想计算行的和或者行中,列中最大值最小值的话,加上axis=0或者1即可。
0是按列,1是按行。
比如:
a = np.array([[1,22,3],[1,4,5]]) print(np.sum(a,axis=1)) print(np.sum(a,axis=0))
输出结果为:
3.numpy中的基本操作
numpy中有取值,合并,分割,复制等操作。
取值:
按照索引取值。
比如a[1],对于一维array来说,就是取索引为1的元素。对于二维array来说,就是取行数的索引为2的一行元素。
a[1][1]就是取一行一列的元素。
a[4,;]取前四行所有元素
a[:,4]取前四列所有元素
a[1,2:4]取一行的2-3索引值的元素
a[1:2,3:4] 取索引值为1的行,以及该行索引值为3的元素
合并:
a = np.array([[1,22,3],[1,4,5]]) b = np.array([[1,44,3],[1,4,2]]) print(np.vstack((a,b)))#上下合并 print(np.hstack((a,b)))#左右合并 print(np.concatenate((a,b,a,b),axis=0))#多个合并 结果为:
分割:
a = np.array([[1,22,3,8],[1,4,5,8],[4,5,6,8]]) b = np.array([[1,44,3],[1,4,2],[5,7,8]]) print(np.split(a,2,axis=1))#纵向分割 print(np.array_split(a,2,axis=0))#横向分割 print(np.vsplit(a,3))#横向分割 print(np.hsplit(b,3))#竖向分割
结果为:
复制:
copy和deep copy
b = a 把a赋值给b,那么对b的所有操作,都会同步在a上发生。
b = a.copy()# deep copy 就不会有连带关系
以上就是numpy的简单操作。