numpy矩阵的基本运算

这篇博客详细介绍了numpy库中矩阵和数组的各种基本运算,包括二维数组、一维数组、全零数组、等差数组的创建,以及矩阵的加减乘除等运算。还深入探讨了矩阵函数的应用,如求和、最大值、最小值、索引、平均值、中位数,以及排序和倒置等,所有函数都提到了axis参数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

numpy矩阵的基本运算

二维数组(矩阵)

# 导库
import numpy as np
# 声明矩阵(二维数组)
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])

# 打印矩阵
print("打印矩阵")
print(arr)

# 输出矩阵长宽
print("打印矩阵的长宽")
print(arr.shape)

# 输出元素数
print("打印矩阵的元素数")
print(arr.size)
打印矩阵
[[1 2 3]
 [4 5 6]
 [7 8 9]]
打印矩阵的长宽
(3, 3)
打印矩阵的元素数
9

一维数组

# 声明一维数组,dtype是定义数据类型
arr = np.array([1,2,3],dtype = np.int64)
# 输出数组
print("打印一维数组")
print(arr)

# 输出数组类型
print("打印数组的数据类型")
print(arr.dtype)
打印一维数组
[1 2 3]
打印数组的数据类型
int64

全零数组

# 生成3个元素的全零数组
arr = np.zeros((3),dtype = np.int32)
print("打印全零数组")
print(arr)

# 生成3*4全零的矩阵,更多为也可以在后面添加
arr = np.zeros((3,4),dtype = np.int16)
print("打印3*4全零的矩阵")
print(arr)

# 生成3*4全1的矩阵
arr = np.ones((3,4))
print("打印3*4全1的矩阵")
print(arr)

# 生成一个2*3的空矩阵,非常接近零即为空
arr = np.empty((2,3),dtype = np.float64)
print("打印2*3的空矩阵")
print(arr)
打印全零数组
[0 0 0]
打印3*4全零的矩阵
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
打印3*4全1的矩阵
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
打印2*3的空矩阵
[[ 1.   2.8  4.6]
 [ 6.4  8.2 10. ]]

等差数组

# arange(a,b,c):a参数:首项值(包括);b参数:末项值(不包括);c参数:公差。只有一个参数:表示0到(a-1),公差为1的等差数列。两个参数:表示a到b,公差为1的等差数列。
arr = np.arange(10,20,2)
print("打印矩阵")
print(arr)

# 生成3*4的0-11范围的矩阵,reshape()表示重新设置矩阵长宽
arr = np.arange(12).reshape((3,4))
print("打印3*4矩阵")
print(arr)
打印矩阵
[10 12 14 16 18]
打印2*3矩阵
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

线段

# 生成线段,linspace(a,b,c);a参数:起始值;b参数:终点值;c参数:端点数。只有两个参数,默认端点数为50。
arr = np.linspace(1,20,10)
print("输出线段数组:")
print(arr)

# 设置矩阵长宽
arr = np.linspace(1,10,6).reshape((2,3))
print("输出线段矩阵:")
print(arr)
输出线段数组:
[ 1.          3.11111111  5.22222222  7.33333333  9.44444444 11.55555556
 13.66666667 15.77777778 17.88888889 20.        ]
输出线段矩阵:
[[ 1.   2.8  4.6]
 [ 6.4  8.2 10. ]]

数组的运算

a_arr = np.array([1,2,3,4])
b_arr = np.arange(5,9,1)
print("输出a_arr数组:")
print(a_arr)

print("输出b_arr数组:")
print(b_arr)

print("输出a_arr+b_arr数组:")
print(a_arr+b_arr)

print("输出a_arr*b_arr数组:")
print(a_arr*b_arr)

print("输出a_arr数组的三次幂:")
print(a_arr**3)
输出a_arr数组:
[1 2 3 4]
输出b_arr数组:
[5 6 7 8]
输出a_arr+b_arr数组:
[ 6  8 10 12]
输出a_arr*b_arr数组:
[ 5 12 21 32]
输出a_arr数组的三次幂:
[ 1  8 27 64]

矩阵的运算

a = np.array([[1,2],[3,4]])
b = np.arange(4).reshape((2,2))
print("输出矩阵a")
print(a)
print("输出矩阵b")
print(b)
# 逐个相乘
c = a*b
# 矩阵相乘
c_dot = np.dot(a,b)
c_dot_2 = a.dot(b)
print("输出逐个相乘c")
print(c)
print("输出矩阵相乘c_dot")
print(c_dot)
print(c_dot_2)
输出矩阵a
[[1 2]
 [3 4]]
输出矩阵b
[[0 1]
 [2 3]]
输出逐个相乘c
[[ 0  2]
 [ 6 12]]
输出矩阵相乘c_dot
[[ 4  7]
 [ 8 15]]
[[ 4  7]
 [ 8 15]]

矩阵的函数

求和、最大值、最小值

# 生成2*4的0-10的随机矩阵
a = np.random.random((2,4))*10
print("输出矩阵a")
print(a)
print("矩阵a的和")
print(np.sum(a))
print("矩阵a最大值")
print(np.max(a))
print("矩阵a的最小值")
print(np.min(a))
输出矩阵a
[[3.92993372 9.19619252 5.86796145 3.46764396]
 [8.12114846 7.67610138 3.52880296 3.38962949]]
矩阵a的和
45.17741393384365
矩阵a最大值
9.19619252206608
矩阵a的最小值
3.389629487281324
# axis=1在行中,axis=0在列中
print(np.sum(a,axis=1))
print(np.max(a,axis=0))
print(np.min(a,axis=1))
[22.46173164 22.71568229]
[8.12114846 9.19619252 5.86796145 3.46764396]
[3.46764396 3.38962949]

矩阵索引

a = np.arange(3,15).reshape((4,3))
print(a)
# 最小值索引
print(np.argmin(a))
# 最大值索引,axis=0表示在列中,axis=1表示在行中
print(np.argmax(a,axis=0))
[[ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]
0
[3 3 3]

矩阵平均值、中位数

a = np.arange(3,15).reshape((4,3))
print(a)
# 平均值
print(np.mean(a))
# 平均值
print(np.average(a,axis=0))
# 中位数
print(np.median(a))
[[ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]
8.5
[7.5 8.5 9.5]
8.5

矩阵累和、累差、非零

# 累加
print("矩阵累加:")
print(np.cumsum(a))
# 累差
print("矩阵累差:")
print(np.diff(a))
# 非零:输出两个数组,第一个表示行数,第二个表示列数,组合起来该位置的数是非零的数
print("非零矩阵:")
print(np.nonzero(a))
矩阵累加:
[  3   7  12  18  25  33  42  52  63  75  88 102]
矩阵累差:
[[1 1]
 [1 1]
 [1 1]
 [1 1]]
非零矩阵:
(array([0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], dtype=int64), array([0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))

排序、倒置

print("原矩阵:")
print(a)
# 倒置
print("矩阵倒置:")
print(np.transpose(a))
# 排序
print("矩阵排序:")
print(np.sort(a))
# clip(a,b,c)函数:a参数:矩阵;b参数:最小值;c参数:最大值。功能:该矩阵中,小于最小值的数都修正为最小值,大于最大值的数都修正为最大值
print("矩阵修正:")
print(np.clip(a,6,9))
原矩阵:
[[ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]
矩阵导致:
[[ 3  6  9 12]
 [ 4  7 10 13]
 [ 5  8 11 14]]
矩阵排序:
[[ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]
矩阵修正:
[[6 6 6]
 [6 7 8]
 [9 9 9]
 [9 9 9]]

以上函数都有axis参数,axis=0表示在列中,axis=1表示在行中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值