numpy介绍

1.准备工作

∙ \bullet numpy是python的库,可以用来处理矩阵。
∙ \bullet 需要引入numpy库,一般我们简写为np。

#引入numpy
import numpy as np

2.创建矩阵

∙ \bullet 生成一个二维矩阵(具体的值自己给出)

import numpy as np
#注意这是二维矩阵,所以要将小列表放入一个大列表中
#一维矩阵只需要放入一个列表即可
array = np.array([[1,2,3],
				  [4,5,6],
				  [7,8,9]])
print(array)
[[1 2 3]
[4 5 6]
[7 8 9]]

∙ \bullet 其他生成方法

a = np.zeros((2,3)) #打印2×3的全部为0的矩阵
print(a)
print('\n',end='')
a = np.ones((1,4)) #打印1×4的全部为1的矩阵
print(a)
print('\n',end='')
a = np.arange(1,12,2).reshape(2,3) #从1到12左闭右开步长为2的列表,构建成2×3的矩阵
print(a)
print('\n',end='')
a = np.linspace(0,20,10).reshape(2,5) ##从0到20左闭右闭个数为10的列表,构建成2×5的矩阵
print(a)
a = np.random.randint(0,2,(3,4)) #打印3×4的值为0和1的矩阵
print(a)
[[0. 0. 0.]
[0. 0. 0.]]

[[1. 1. 1. 1.]]

[[ 1  3  5]
[ 7  9 11]]

[[ 0.          2.22222222  4.44444444  6.66666667  			8.88888889]
 [11.11111111 13.33333333 15.55555556 17.77777778 20.        ]]
 
 [[1 0 1 0]
  [1 0 1 1]
  [1 1 0 1]]

矩阵基本属性:

print('number of dim:',array.ndim) #矩阵的维度
print('shape:',array.shape) #矩阵的行列数
print('size:',array.size) #矩阵的元素个数
number of dim: 2
shape: (3, 3)
size: 9

3.基本计算

∙ \bullet 加减乘除

a = np.array([[1,2],
              [3,4]])
b = np.arange(4).reshape(2,2)
print(a)
print()
print(b)
print()
c = a+np.cos(b) #加减就是对应位置的元素直接进行加减,可以调用np.cos\np.sin等等
print(c)
print()
c = a*b #对应位置的元素直接进行相乘就直接使用乘法
print(c)
print()
c_dot = np.dot(a,b) #使用矩阵相乘就使用np.dot(a,b)
c_dot_1 = a.dot(b)
print(c_dot)
print(c_dot_1)
[[1 2]
 [3 4]]

[[0 1]
 [2 3]]

[[2.         2.54030231]
 [2.58385316 3.0100075 ]]

[[ 0  2]
 [ 6 12]]

[[ 4  7]
 [ 8 15]]
[[ 4  7]
[ 8 15]]

∙ \bullet 求行\列总和、最大值、最小值

a = np.random.random((2,4))  #在0-1之间随机生成2×4的矩阵
print(a)
print()
print(np.sum(a,axis=1))  #返回a矩阵的元素总和,加第二个参数如果为1表示每一行都求和,如果为0表示每一列都求和
print()
print(np.min(a,axis=0)) #返回矩阵的每列最小值
print()
print(np.max(a,axis=1)) #返回矩阵的每行最大值
[[0.77745304 0.56581855 0.64525938 0.62026538]
 [0.55598584 0.5881065  0.67757639 0.67117363]]

[2.60879636 2.49284237]

[0.55598584 0.56581855 0.64525938 0.62026538]

[0.77745304 0.67757639]

∙ \bullet 特殊函数

a = np.arange(2,14).reshape(3,4)
print(a)
print(np.argmin(a)) #返回该矩阵最小值的索引
print(np.argmax(a)) #返回该矩阵最大值的索引
print(np.mean(a)) #返回该矩阵的平均值
print(np.average(a)) #返回该矩阵的平均值
print(np.median(a)) #返回该矩阵的中位数
print(np.cumsum(a)) #在每个位置返回他前面所有数加自己的和
print(np.diff(a)) #每个数分别计算后一个数减自己的差值
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]
0
11
7.5
7.5
7.5
[ 2  5  9 14 20 27 35 44 54 65 77 90]
[[1 1 1]
 [1 1 1]
 [1 1 1]]
a = np.arange(4)
print(a)
print(a<3) #返回布尔值,每个数分别和3进行判断
print(a==3) #返回布尔值,每个数分别判断是否等于3
[0 1 2 3]
[ True  True  True False]
[False False False  True]
a = np.array([[1,4,3],
              [0,8,5],
              [7,2,9]])

print(a)
print()
print(np.nonzero(a)) #返回所有非0数的行列位置信息
print()
print(np.sort(a)) #逐行进行排序
print()
print(np.transpose(a)) #矩阵的转置
print(a.T) #矩阵的转置
print()
print(np.clip(a,4,7)) #将矩阵中小于4的数都变成4,大于7的数都变成7,其他数字不改变
[[1 4 3]
 [0 8 5]
 [7 2 9]]

(array([0, 0, 0, 1, 1, 2, 2, 2], dtype=int64), array([0, 1, 2, 1, 2, 0, 1, 2], dtype=int64))

[[1 3 4]
 [0 5 8]
 [2 7 9]]

[[1 0 7]
 [4 8 2]
 [3 5 9]]
[[1 0 7]
 [4 8 2]
 [3 5 9]]

[[4 4 4]
 [4 7 5]
 [7 4 7]]

∙ \bullet 返回索引

a = np.arange(3,15).reshape(3,4)
print(a)
print()
print(a[1]) #打印第二行内容
print()
print(a[1,2]) #打印第二行第三列的元素
print()
print(a[:,2]) #打印第三列
print()
print(a.flatten()) #变成一维数组
print()
for item in a.flat: #迭代器,逐个打印
    print(item)
[[ 3  4  5  6]
 [ 7  8  9 10]
 [11 12 13 14]]

[ 7  8  9 10]

9

[ 5  9 13]

[ 3  4  5  6  7  8  9 10 11 12 13 14]

3
4
5
6
7
8
9
10
11
12
13
14

∙ \bullet 合并矩阵

a = np.array([1,1,1])[:,np.newaxis] #将一个数组转换为矩阵
b = np.array([2,2,2])[:,np.newaxis]

print(a)
print()
print(b)
print()
print(np.vstack((a,b))) #vertiacl 竖直方向的合并
print()
print(np.hstack((a,b,a))) #horizontal 水平方向合并
print()
print(np.concatenate((a,b,a),axis=1)) #使用concatenate,只需要在参数加入axis判断如何合并,当它为1时是水平合并
[[1]
 [1]
 [1]]

[[2]
 [2]
 [2]]

[[1]
 [1]
 [1]
 [2]
 [2]
 [2]]

[[1 2 1]
 [1 2 1]
 [1 2 1]]

[[1 2 1]
 [1 2 1]
 [1 2 1]]

∙ \bullet 分割矩阵

a = np.arange(12).reshape(3,4)
print(a)
print()
print(np.split(a,2,axis=1)) #参数axis=1表示列分割,但是只能平均分割,不能出现不均等的分割
print()
print(np.array_split(a,3,axis=1)) #可以不均等的分割
print()
print(np.vsplit(a,3)) #竖直方向的分割
print()
print(np.hsplit(a,2)) #水平方向的分割
print()
[[ 0  1  2  3]
[ 4  5  6  7]
[ 8  9 10 11]]

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

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

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

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

∙ \bullet 矩阵拷贝

a = np.arange(4)
print(a)
print()
b = a  #直接赋值,他们的地址仍然相同,指向相同的内容,a发生变化b跟着改变
b1 = a.copy() #copy函数,使得b1和a直接没有关联
a[1]=10
print(b)
print()
print(b1)
[0 1 2 3]

[ 0 10  2  3]

[0 1 2 3]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比奇堡咻飞兜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值