1、numpy&pandas用处
运算速度快
numpy基于矩阵运算
2、安装
3、numpy基本属性
–简写为np
import numpy as np
–长3高2的矩阵(列表)
[[1,2,3],
[2,3,4]]
–转换为矩阵
array=np.array([[1,2,3]
[2,3,4]])
–输出矩阵
print(array)
–几维数组dim 2
print(‘number of dim:’,array.ndim)
–形状,行数列数shape (2,3)
print(‘shape:’,array.shape)
–多少元素size 6=2*3
print(‘size:’,array.size)
4、创建array
import numpy as np
– 一维
a=np.array([2,23,4])
print(a)
=[2 23 4]
a=np.array([2,23,4],dtype=np.int)
print(a.dtype)
=int64(默认)
a=np.array([2,23,4],dtype=np.float)
print(a.dtype)
=float64(默认)64位更精确
a=np.array([2,23,4],dtype=np.float32)
print(a.dtype)
=float32(指定)
– 二维
a=np.array([2,23,4],
[2,32,4]])
print(a)
– 全部为0的矩阵
a=np.zeros((3,4))
print(a)
– 全部为1的矩阵
a=np.ones((3,4),dtype=np.int16)
print(a)
–什么都没有
a=np.empty((3,4))
print(a)
– 有序数列
a=np.arange(10,20,2)
print(a)
[10,12,14,16,18]
– 3行3列的数列
a=np.arange(12).reshape((3,4))
print(a)
– 生成线段
a=np.linspace(1,10,5)
print(a)
a=np.linspace(1,10,6).reshape((2,3))
print(a)
5、numpy基础运算
import numpy as np
a=np.array([10,20,30,40])
b=np.array(4)
print(a,b)
– 减法
c=a-b
print©
– 加法
c=a+b
print©
– 次方()
c=b4
print©
– sin,cos等三角函数
c=10np.sin(a)
print©
c=10np.tan(a)
print©
– array中哪些值大于/小于……
print(b)
print(b<3)
print(b==3)
– 运算二维矩阵
a=np.array([[1,1],
[0,1]])
b=np.array(4).reshape((2,2))
print(a)
print(b)
– 逐个相乘
c=a*b
– 矩阵相乘
c_dot=a.dot(b)
c_dot_2=np.dot(a,b)
– 随机生成
import numpy as np
a=np.random.random((2,4))
print(np.sum(a))
print(np.min(a))
print(np.max(a))
print(np.sum(a,axis=1)) 每列求和
print(np.min(a,axis=0)) 每行求最小
print(np.max(a,axis=1))
import numpy as np
A=np.arange(2,14).reshape((3,4))
– 最小值索引
print(np.argmin(A))
– 最大值索引
print(np.argmax(A))
– 平均值
print(np.mean(A))
print(A.mean())
– mean可以指定行列
print(np.mean(A,axis=0) 列
print(np.mean(A,axis=1) 行
print(np.average(A))
– 中位数
print(np.median(A))
– 累加
print(np.cumsum(A))
– 两两之差
print(np.diff(A))
– 值的对应位置,行数+列数
print(np.nonzero(A))
– 排序
print(np.sort(A))
– 矩阵的反向,行变成列,列变成行
print(np.transpose(A))
print(A.T)
– 再叠加乘法
print((A.T).dot(A))
– clip功能:<5的数都=5,>9的数都=9,5和9之间的数保留不变
print(np.clip(A,5,9))
6、numpy的索引
import numpy as np
一维
A=np.arange(3,15)
print(A)
– 第三个值
print(A[3])
二维
A=np.arange(3,15).reshape((3,4))
– 2的索引数
print(A[2])
– 索引第2行第1列
print(A[2][1])
print(A[2,1])
– 第二行所有数
print(A[2,:])
– 第一列所有数
print(A[:,1])
– 第一行1-2的值
print(A[1,1:2])
– for循环
– 每一行的数
for row in A:
print(row)
for column in A.T:
print(column)
– 迭代项目(A.flat是迭代器)
print(A.flatten())
for item in A.flat:
print(item)
7、numpy的array合并
import numpy as np
A=np.array([1,1,1])
B=np.array([2,2,2])
– 上下合并 #vertical stack
C=np.vstack((A,B))
print(A.shape,C.shape)
– 左右合并 #horizontal stack
D=np.hstack((A,B))
print(D)
print(A.shape,D.shape)
– 将横向数列变成竖向
print(A[:,np.newaxis])
A=A[:,np.newaxis]
B=B[:,np.newaxis]
C=np.vstack((A,B))
print©
D=np.hstack((A,B))
print(D)
– 多个合并,并加要求
C=np.concatenate((A,B,B,A),axis=0)
print©
8、numpy array分隔
import numpy as np
A=np.arange(12).reshape((3,4))
– 横向分隔,对列进行分隔
print(np.split(A,2,axis=1))
– 纵向分隔,对行进行分隔
print(np.split(A,3,axis=0))
– 不等量分隔
print(np.array_split(A,3,axis=1))
print(np.vsplit(A,3)) 纵
print(np.hsplit(A,2)) 横
9、numpy array的复制 copy and deep copy
import numpy as np
a=np.arange(4)
print(a)
b=a
c=a
d=b
a[0]=11
print(a)
b is a --true
print(b)
print©
print(d)
d[1:3]=[22,33]
print(d)
print(a) —a,b,c也改变
#deep copy(copy值 但不关联)
b=a.copy()
print(b)
a[3]=44
print(b) --a变,b不改变