数组的基本运算(1)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值