数组的基本运算(1)

    xiaoxiao2021-03-25  62

    3 数组的基本运算

    数组的算术运算是按元素逐个运算。数组运算后将创建包含运算结果的新数组。

    与其他矩阵语言不同,NumPy中的乘法运算符*按元素逐个计算,矩阵乘法可以使用dot函数或创建矩阵对象实现(后续介绍)

     

    2.2.3.1 数组的加减运算

    >>> a= np.array([20,30,40,50])

    >>> b= np.arange( 4)

    >>> b

    array([0, 1, 2, 3])

    >>> c= a-b

    >>> c

    array([20, 29, 38, 47])

    将运算结果更新原数组,不创建新数组

    >>> a= np.ones((2,3), dtype=int)

    >>> b= np.random.random((2,3))   ##生成2*3矩阵,元素为[0,1)范围的随机数

    >>> a*= 3

    >>> a

    array([[3, 3, 3],

           [3, 3, 3]])

    >>> b+= a   #a转换为浮点类型相加

    >>> b

    array([[ 3.69092703, 3.8324276, 3.0114541],

            [ 3.18679111, 3.3039349, 3.37600289]])

    >>> a+= b   # b转换为整数类型报错

    TypeError: Cannot cast ufunc add output from dtype('float64') to dtype('int32') with casting rule 'same_kind'

     

     

    当数组中存储的是不同类型的元素时,数组将使用占用更多位(bit)的数据类型作为其本身的数据类型,也就是偏向更精确的数据类型(这种行为叫做upcast)。

    >>> a= np.ones(3, dtype=np.int32)

    >>> b= np.linspace(0,np.pi,3)

    >>> b.dtype.name

    'float64'

    >>> c= a+b

    >>> c

    array([ 1., 2.57079633, 4.14159265])

    >>>  'float64'

     

     

    2.2.3.2 数组乘法运算

    >>>b=np.arange(4)

    array([0,1,2,3])

    >>> b**2

    array([0, 1, 4, 9])

    >>> 10*np.sin(a)

    array([ 9.12945251,-9.88031624, 7.4511316, -2.62374854])

    >>> a<35

    array([True, True, False, False], dtype=bool)

    2.2.3.3 数组内部运算

    许多非数组运算,如计算数组所有元素之和,都作为ndarray类的方法来实现,使用时需要用ndarray类的实例来调用这些方法。

    二维数组:

    >>> np.sum([[0, 1], [0, 5]])

    6  //求所有元素的和

    >>> np.sum([[0, 1], [0, 5]], axis=0)

    array([0, 6])   //求各列的和

    >>> np.sum([[0, 1], [0, 5]], axis=1)

    array([1, 5])   //求各行的和

     

     

    >>> b= np.arange(12).reshape(3,4)

    >>> b

    array([[ 0, 1, 2, 3],

               [ 4, 5, 6, 7],

               [ 8, 9, 10, 11]])

    >>> b.sum(axis=0)    # 计算每一列的和

    array([12, 15, 18, 21])

    >>> b.min(axis=1)    # 获取每一行的最小值

    array([0, 4, 8])

    >>> b.cumsum(axis=1)   # 计算每一行的累积和

    array([[ 0, 1, 3, 6],

               [ 4, 9, 15, 22],

               [ 8, 17, 27, 38]])

     

     

    三维数组:

    >>> x

    array([[[ 0,  1,  2],

       [ 3,  4,  5],

       [ 6,  7,  8]],

     

      [[ 9, 10, 11],

       [12, 13, 14],

       [15, 16, 17]],

     

      [[18, 19, 20],

       [21, 22, 23],

       [24, 25, 26]]])

    >>> x.sum(axis=1)

    array([[ 9, 12, 15],

      [36, 39, 42],

      [63, 66, 69]])

    >>> x.sum(axis=2)

    array([[ 3, 12, 21],

      [30, 39, 48],

      [57, 66, 75]])

     

    求元素最值

    >>> a= np.random.random((2,3))

    >>> a

    array([[ 0.65806048, 0.58216761, 0.59986935],[ 0.6004008, 0.41965453, 0.71487337]])

    >>> a.sum()

       3.5750261436902333

    >>> a.min()

         0.41965453489104032

    >>> a.max()

         0.71487337095581649

    转载请注明原文地址: https://ju.6miu.com/read-200116.html

    最新回复(0)