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
一维数组
arr = np. array( [ 1 , 2 , 3 ] , dtype = np. int64)
print ( "打印一维数组" )
print ( arr)
print ( "打印数组的数据类型" )
print ( arr. dtype)
打印一维数组
[1 2 3]
打印数组的数据类型
int64
全零数组
arr = np. zeros( ( 3 ) , dtype = np. int32)
print ( "打印全零数组" )
print ( arr)
arr = np. zeros( ( 3 , 4 ) , dtype = np. int16)
print ( "打印3*4全零的矩阵" )
print ( arr)
arr = np. ones( ( 3 , 4 ) )
print ( "打印3*4全1的矩阵" )
print ( arr)
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. ]]
等差数组
arr = np. arange( 10 , 20 , 2 )
print ( "打印矩阵" )
print ( arr)
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]]
线段
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]]
矩阵的函数
求和、最大值、最小值
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
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) )
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) )
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表示在行中