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])
print(a,b)
c=a-b
print(c)
'''
[10 20 30 40] [0 1 2 3]
[10 19 28 37]
可以看到满足矩阵的减法运算,对应元素相减
'''
c=a*b # array([ 0, 20, 60, 120])#a,b对应元素相乘法
c=b**2 # array([0, 1, 4, 9]) #每个元素对应2次方
c=10*np.sin(a)
print(b<3)
'''
上述运算均是建立在一维矩阵,即只有一行的矩阵上面的计算,如果我们想要对多行多维度的矩阵进行操作,需要对开始的脚本进行一些修改:
'''
a=np.array([[1,1],[0,1]])
b=np.arange(4).reshape((2,2))
print(a)
print(b)
c_dot = np.dot(a,b) #可以看到np.dot就表示numpy中的矩阵想乘,这里要注意的是,矩阵相乘的元素必须是numpy中的数据元素
c_dot_2 = a.dot(b) #另外的一种表示方式
print(c_dot)
a=np.random.random((2,4))
print(a)
print(np.sum(a),np.min(a),np.max(a))
'''
如果你需要对行或者列进行查找运算,就需要在上述代码中为 axis 进行赋值。
当axis的值为0的时候,将会以列作为查找单元, 当axis的值为1的时候,将会以行作为查找单元。
'''
print("a =",a)
# a = [[ 0.23651224 0.41900661 0.84869417 0.46456022]
# [ 0.60771087 0.9043845 0.36603285 0.55746074]]
print("sum =",np.sum(a,axis=1)) # sum = [ 1.96877324 2.43558896]
print("min =",np.min(a,axis=0)) # min = [ 0.23651224 0.41900661 0.36603285 0.46456022]
print("max =",np.max(a,axis=1)) # max = [ 0.84869417 0.9043845 ]
需要注意的是dot表示的是矩阵相乘,而*表示的的是对应元素相乘
对于要对列或者行进行查找运算的时候(这是个需求,比如在RNN中,节点的Weight矩阵是分为输入数据和当前状态两个部分,有分开讨论的需求)
加入axis=1表示以行为查找,axis为0表示以列为查找
当不满足矩阵乘法的规则时候(shape不满足),运算会出问题,所以要认真检查shape
手机扫一扫
移动阅读更方便
你可能感兴趣的文章