Numpy基础入门实例
- 安装
- 使用pip
- 使用PyCharm
- 入门实例
- 基础运算
- Array基础
- 创建各类矩阵
- 矩阵基本属性
- 索引取值
- 矩阵运算
- Array分割
- Array合并
- 深拷贝与浅拷贝
安装
使用pip
# 可以换国内源(如清华镜像)提高下载速度
pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
使用PyCharm
新建一个Python项目,左上角打开Setting,寻到Project Interpreter,然后点击右侧加号
搜索Numpy,然后左下角点击安装,等待安好即可
入门实例
基础运算
import numpy as np
#创建两个列表
a = np.array([10,20,30,40])
b = np.arange(4)
#减法 加法
c = a - b
d = a + b
print(c)
print(d)
#乘法
e = a * b
print(e)
#平法
e = a ** 2
print(e)
#三角函数 sin cos tan...
e = 10 * np.sin(a)
print(e)
#根据表达式判断数组值 成立则为true
print(b)
print(b < 3)
print(b == 3)
#矩阵乘法 (不是直接乘)
array1 = np.array([[1,1],
[0,1]])
array2 = np.arange(4).reshape((2,2))
print(array1)
print(array2)
array3 = array1 * array2 #对应位置值相乘
array3_dot = np.dot(array1,array2) #矩阵乘法
#array3_dot = array1.dot(array2) 效果相同
print(array3)
print(array3_dot)
#随机生成矩阵 用函数求值
rans = np.random.random((2,4)) #随机生成范围在0到1的2行4列矩阵
print(rans)
ran = np.arange(8).reshape((2,4))
print(ran)
print(np.sum(ran)) #所有值总和
print(np.sum(ran,axis=0)) #每一列总和
print(np.sum(ran,axis=1)) #每一行总和
print(np.min(ran)) #所有值中的最小值
print(np.min(ran,axis=0)) #每一列中的最小值
print(np.min(ran,axis=1)) #每一行中的最小值
print(np.max(ran)) #所有值中的最大值
print(np.max(ran,axis=0)) #每一列中的最大值
print(np.max(ran,axis=1)) #每一行中的最大值
print(np.mean(ran)) #所有值的平均值
print(np.mean(ran,axis=0)) #每一列的平均值
print(np.mean(ran,axis=1)) #每一行的平均值
Array基础
创建各类矩阵
import numpy as np
#创建一维矩阵
a = np.array([2,1,3])
print(a) #输出类似无逗号列表
#添加类型 int float等
b = np.array([2,1,3],dtype=np.int)
print(b.dtype)
#定义二维矩阵
array = np.array([[1,2,3],
[1,2,3]])
print(array)
#定义全零矩阵
arrayzeros = np.zeros((3,4),dtype=int)
# print(arrayzeros.dtype)
print(arrayzeros)
#定义全1矩阵
arrayones = np.ones((3,4),dtype=int)
print(arrayones)
#定义空矩阵(值接近为0)
arrayempty = np.empty((3,4))
print(arrayempty)
#生成有序array
##默认步长为1 左闭右开
arangedemo1 = np.arange(10,20,2)
print(arangedemo1)
##二维
arangedemo2 = np.arange(12).reshape((3,4))
print(arangedemo2)
##等差数列
arangedemo3 = np.linspace(1,10,5)
print(arangedemo3)
arangedemo3 = np.linspace(1,10,6).reshape((2,3))
print(arangedemo3)
矩阵基本属性
import numpy as np
#创建
array = np.array([[1,2,3],
[1,2,3]])
#打印矩阵
print(array)
#打印维度
print(array.ndim)
#打印几行几列
print(array.shape)
#打印矩阵元素数量
print(array.size)
索引取值
import numpy as np
#单行索引
A = np.arange(3,15)
print(A)
print(A[3])
#矩阵索引
B = np.arange(3,15).reshape((3,4))
print(B)
print(B[1][1])
print(B[1,1]) #同上
#冒号可以代替范围
print(B[1,:])
print(B[:,0])
print(B[1,1:3])
#for循环迭代每一行 和 每一列
for row in B:
print(row)
for column in B.T:
print(column)
#迭代每一个内容
print(B.flatten()) #将矩阵得到一个展开的数组
for item in A.flat:
print(item)
矩阵运算
import numpy as np
A = np.arange(2,14).reshape((3,4))
print(A)
#最小值最大值的索引
print(np.argmax(A))
print(np.argmin(A))
#平均值
print(A.mean())
print(np.average(A))
print(np.mean(A))
#逐步累加
print(np.cumsum(A))
#逐步累差
print(np.diff(A))
#找出非0的数 输出为对应的行 列索引表
print(np.nonzero(A))
#排序 对每一行进行排序
B = np.arange(14,2,-1).reshape((3,4))
print(np.sort(B))
#矩阵转置
print(np.transpose(A))
print(A.T)
#替换
#如下:使所有小于5的变为5 使所有大于9的变为9
print(np.clip(A,5,9)) #注意其余数保持不变
Array分割
import numpy as np
A = np.arange(12).reshape((3,4))
print(A)
#平分成2块 按列
print(np.split(A,2,axis=1))
#分成3块 按行
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)) #按列
Array合并
import numpy as np
A = np.array([1,1,1])
B = np.array([2,2,2])
#上下合并
print(np.vstack((A,B)))
#左右合并
print(np.hstack((A,B)))
#将A转置 (这里注意不能用矩阵的T方法转置一维Array)
print(A[:,np.newaxis])
print(np.hstack((A[:,np.newaxis],B[:,np.newaxis])))
#后面参数为0可以左右合并 参数1可以纵向合并
C = np.concatenate((A,B,B,A),axis=0)
print(C)
深拷贝与浅拷贝
import numpy as np
a = np.array([1,2,3,4])
#简单赋值
b = a
#a发生改变时候,b也发生改变 同样 改变b a也变(浅copy)
a[0] = 0
print(a)
print(b)
print(b is a) #如果是true说明指向相同
#要使赋值不关联之前变量 需要使用深copy方法
c = a.copy()
print(c)
c[0] = 1
print(c is a)
print(c)