Numpy的学习2-基础运算1
Posted simon-idea
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Numpy的学习2-基础运算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]) 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次方 # 另外,Numpy中具有很多的数学函数工具,比如三角函数等,当我们需要对矩阵中每一项元素进行函数运算时,可以很简便的调用它们(以sin函数为例): c=10*np.sin(a) # array([-5.44021111, 9.12945251, -9.88031624, 7.4511316 ]) # 除了函数应用外,在脚本中对print函数进行一些修改可以进行逻辑判断: # 如果想要执行是否相等的判断, 依然需要输入 == 而不是 = 来完成相应的逻辑判断。 print(b<3) # array([ True, True, True, False], dtype=bool) ‘‘‘ 上述运算均是建立在一维矩阵,即只有一行的矩阵上面的计算,如果我们想要对多行多维度的矩阵进行操作,需要对开始的脚本进行一些修改: ‘‘‘ a=np.array([[1,1],[0,1]]) b=np.arange(4).reshape((2,2)) print(a) # array([[1, 1], # [0, 1]]) print(b) # array([[0, 1], # [2, 3]]) # Numpy中的矩阵乘法分为两种, 其一是前文中的对应元素相乘,其二是标准的矩阵乘法运算,即对应行乘对应列得到相应元素: c_dot = np.dot(a,b) #可以看到np.dot就表示numpy中的矩阵想乘,这里要注意的是,矩阵相乘的元素必须是numpy中的数据元素 c_dot_2 = a.dot(b) #另外的一种表示方式 print(c_dot) # array([[2, 4], # [2, 3]]) # 来看看关于 sum(), min(), max()的使用: 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
以上是关于Numpy的学习2-基础运算1的主要内容,如果未能解决你的问题,请参考以下文章