numpy 的四则运算

一、一维矩阵的加减乘除,三角函数

注意,如果是两个数组运算,则元素个数要一致

import  numpy as np
a=np.array([10,20,30,40])  #array([10, 20, 30, 40])
b=np.arange(4)  #array([0, 1, 2, 3])
c=np.arange(3)  #array([0, 1, 2])
a+4  #array([14, 24, 34, 44])
a+b  #array([10, 21, 32, 43])

#如果两个数组元素个数不一致,就不能相加
a+c   #ValueError: operands could not be broadcast together with shapes (4,) (3,) 

a-b  #array([10, 19, 28, 37])
a*b  #array([  0,  20,  60, 120])
b/a  #array([0.        , 0.05      , 0.06666667, 0.075     ])

sum(a)  #100
sin(a)  # array([-0.54402111,  0.91294525, -0.98803162,  0.74511316])
np.sin(a)  # array([-0.54402111,  0.91294525, -0.98803162,  0.74511316])
cos(a)  #array([-0.83907153,  0.40808206,  0.15425145, -0.66693806])
tan(a)  #array([ 0.64836083,  2.23716094, -6.4053312 , -1.11721493])

二、多维矩阵的乘法

矩阵的乘法,A(m*n)*B(n*c),其中A的列数=B的行数,生成一个m*c的C矩阵,C[0,0]=A[0,0]*B[0,0]+A[0,1]*B[1,0],C[0,1]=A[0,0]*B[0,1]+A[0,1]*B[1,1]

import  numpy as np
a=np.array([[1,1],
            [0,1]])
b=np.arange(4).reshape((2,2))
a*b#两个同型矩阵对应元素的乘积
np.dot(a,b)#矩阵的乘法运算
a.dot(b) #矩阵ab的乘积
'''
array([[0, 1],
       [0, 3]])
array([[2, 4],
       [2, 3]])
array([[2, 4],
       [2, 3]])
'''

写成函数就是这样的了

def array_dot(a,b):
    m,n=shape(a)
    j,k=shape(b)
    c=ones(m*k).reshape(m,k)
    if n!=j:
        return
    else:
        for i in range(m):
            for l in range(k):
                c[i,l]=sum(a[i]*b[:,l])
    return c

三、多维矩阵行列运算

import  numpy as np     
a=np.array([[1,2,3],[2,3,4]])

a.sum()
a.max()
a.sum(axis=1)  #array([6, 9])
a.sum(axis=0)  # array([3, 5, 7])

四、矩阵的索引运算

argmin() 和 argmax() 两个函数分别对应着求矩阵中最小元素和最大元素的索引

import  numpy as np      
A=np.arange(2,14).reshape
print(A)                 
print(np.argmin(A))  #0  
print(np.argmax(A))  #11 
print(np.mean(A))  # 均值7.5 
print(A.mean())    #均值 7.5  
print(np.average(A))# 均值7.5
print(np.median(A))  #中位数7.5    
print(np.cumsum(A)) # 累加[ 2  5  9 14 20 27 35 44 54 65 77 90]
print(np.diff(A))#下面显示
#将所有非零元素的行与列坐标分割开,重构成两个分别关于行和列的矩阵
print(np.nonzero(A))   

五、矩阵转置

import  numpy as np
A=np.arange(1,10).reshape(3,3)
A
#transpose
print(np.transpose(A))
#T
print(A.T)

'''
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 4 7]
[2 5 8]
[3 6 9]]
[[1 4 7]
[2 5 8]
[3 6 9]]
'''

六、矩阵截取clip

import numpy as np
a=np.arange(1,13).reshape((3,4))
print(a)
print(np.clip(a,5,9))#最小5,最大9,小于5的都成了5,大于9的都成了9

'''
输出结果
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[5 5 5 5]
[5 6 7 8]
[9 9 9 9]]
'''
原文地址:https://www.cnblogs.com/cgmcoding/p/13454132.html