主要同于数据分析,处理。numpy基于C语言,因此速度特别快,pandas基于numpy,是numpy的升级版。
主要用矩阵进行处理。
Anaconda里面直接就带上了这些常用包,省去了安装的麻烦
测试
import numpy as np
array = np.array([[1,2,3]
,[2,3,4]])
print(array)
#维度
print('number of dim:',array.ndim)
#几行几列
print('shape:',array.shape)
#总共的元素数
print('size:',array.size)
1. 创建矩阵
a = np.array([[2,3,4],
[5,2,65]])
#生成一个3×4的空矩阵
b = np.zeros((3,4))
#生成一个3×4的单位矩阵
c = np.ones((3,4))
#生成一个3×4的单位矩阵
c = np.ones((3,4))
#生成一个矩阵,不进行初始化
d = np.empty((3,4))
#生成随机值
e = np.arange(10,20,2)
print(a)
print(b)
print(c)
#简单计算
a = np.array([3,4,5])
b = np.array(4)
print(a)
print(b)
print(a-b)
print(a+b)
print(a*b)
print(a/b)
3.生成随机矩阵
a = np.random.random((2,4))
print(a)
a = np.random.random((2,4))
print(a)
#axis决定进行处理的维度,axis = 0,在每列中进行查找处理,axis = 1为在行中
#print(np.sum(a,axis = 1))
print(np.sum(a))
print(np.min(a))
print(np.max(a))
a = np.arange(2,14).reshape(3,4)
print(np.argmin(a))
print(np.argmax(a))
6.常用基本操作
a = np.arange(2,14).reshape(3,4)
#平均值
print(np.mean(a))
print(a.mean())
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(a.T)
#二值化滤波
print(np.clip(a,5,9))
#矩阵求逆
a = np.array([[1, 2], [-1, -3]])
print(np.linalg.inv(a))
7.内积,外积
内积(点积):对应位置元素相乘,然后合并相加,最后结果是标量
内积二维物理意义:短边在长边上的投影
外积(叉乘):
二维:
a × b = [a1,a2] × [b1,b] = a2b1 - a1b2
a × b = |a| * |b| sinα
物理意义: 0<α<Π/2 : a ,b两个向量张成的平行四边形的面积
α > Π/2 : 对应值取反
三维:所得到的是一个向量而不是标量
物理意义:a和b向量张成的平面的法向量
u = np.array([1,2,3])
v = np.array([4,5,6])
#内积
print("内积:",np.dot(u,v))
#外积
print("外积:",np.cross(u,v))
#普通直接相乘
print("直接相乘:",u*v)
a = np.arange(3,15).reshape(3,4)
print(a)
#索引方式类似于多维数组
print(a[2])
#print(a[2,2])
print(a[2][2])
#输出第二列的所有数,可用 : 代替
print(a[:,1])
#对每一行进行迭代输出
for row in a:
print(row)
#对每一列进行迭代输出
for column in a.T:
print(column)
#迭代输出每一项
for item in a.flat:
print(item)
a = np.array([1,1,1])
b = np.array([2,2,2])
#进行上下合并
print(np.vstack((a,b)))
#进行左右合并(还是一个序列)
print(np.hstack((a,b)))
#在行上增加一个维度
print(a[np.newaxis,:])
#在列上增加一个维度
print(a[:,np.newaxis])
#进行多个序列的合并(需先给序列增加一个维度)
a = a[np.newaxis,:]
b = b[np.newaxis,:]
print(np.concatenate((a,b,b,a),axis = 0))
print(np.concatenate((a,b,b,a),axis = 1))
a = np.arange(12).reshape(3,4)
print(a)
#均等分割
#按列将其分成两块竖着的两块
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))
a = np.arange(4)
#a,b,c,d关联 ,改变其中任意一个,其他都会变化
b = a
c = a
d = b
a[0] = 12
print(b)
print(b is a)
print(d is a)
#只把值赋给b,a与b不关联,改变a,b不会变化
b = a.copy()
a[1] = 45
print(a)
print(b)