我爱编程

NumPy(矩阵运算)

2017-12-01  本文已影响0人  人机分离机

一、基本运算

  1. 基础加法、减、乘
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=a+b   # array([10, 21, 32, 43])
c=a-b  # array([10, 19, 28, 37])
c=a*b   # array([  0,  20,  60, 120])
c=b**2  # array([0, 1, 4, 9])
  1. 逻辑判断
print(b<3)  
# array([ True,  True,  True, False], dtype=bool)

二、函数

  1. 矩阵乘积
c = np.dot (a, b)
c = np.matmul(a, b)
  1. 对矩阵的值进行操作
print(A.flatten())
# array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
for item in A.flat:
    print(item)
# 3
# 4
……
# 14
np.sum(A)   # 4.4043622002745959
np.min(A)   # 0.23651223533671784
np.max(A)   # 0.90438450240606416
np.average(A)  
np.mean(A) 或 A.mean()
A.median()
np.cumsum(A)  # 累加
np.diff(A)  # 累差
如果 a=mat([ [1,0,0],                          
             [0,0,0],
             [0,0,0]])                      
 则 nonzero(a) 返回值为 (array([0]), array([0]))   , 因为矩阵a只有一个非零值, 在第0行, 第0列。

如果 a=mat([ [1,0,0],                          
             [1,0,0],
             [0,0,0]])                      
 则 nonzero(a) 返回值为 (array([0, 1]), array([0, 0]))   , 因为矩阵a只有两个非零值, 在第0行、第0列,和第1行、第0列。所以结果元组中,第一个行维度数据为(0,1) 元组第二个列维度都为(0,0)。
import numpy as np
A = np.arange(14,2, -1).reshape((3,4)) 

# array([[14, 13, 12, 11],
#       [10,  9,  8,  7],
#       [ 6,  5,  4,  3]])

print(np.sort(A))    

# array([[11,12,13,14]
#        [ 7, 8, 9,10]
#        [ 3, 4, 5, 6]])

三、矩阵转置

  1. axis进行赋值
print("sum =",np.sum(a,axis=1))
print("min =",np.min(a,axis=0))
print("max =",np.max(a,axis=1))
  1. 矩阵的转置有两种表示方法:
print(np.transpose(A))    
print(A.T)
  1. 特殊转置clip()函数
print(A)
# array([[14,13,12,11]
#        [10, 9, 8, 7]
#        [ 6, 5, 4, 3]])

print(np.clip(A,5,9))    
# array([[ 9, 9, 9, 9]
#        [ 9, 9, 8, 7]
#        [ 6, 5, 5, 5]])
上一篇 下一篇

猜你喜欢

热点阅读