NumPy教程之(四)

NumPy针对数组(array)的基本数学操作函数一般是逐元素进行的,比如矩阵的加减运算,线性代数上的矩阵运算则有专门的函数,如dot函数等,具体看示例。

>>> 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])
>>> 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)


数组的有些数学运算,如+=和*=,施行的是原位运算,即直接修改覆盖原来的变量,而不是新建一个变量,如下所示:


当遇到类型不同的数组进行运算的时候,NumPy同C/C++一样,都是向上转换,如整型向浮点型转换,反过来会出现截断错误,一般禁止反向转换。如下所示:

>>> a = np.ones(3, dtype=np.int32)
>>> b = np.linspace(0,pi,3)
>>> b.dtype.name
'float64'
>>> c = a+b
>>> c
array([ 1. , 2.57079633, 4.14159265])
>>> c.dtype.name
'float64'
>>> d = np.exp(c*1j)
>>> d
array([ 0.54030231+0.84147098j, -0.84147098+0.54030231j,
-0.54030231-0.84147098j])
>>> d.dtype.name
'complex128'
许多一元运算,例如计算数组中所有元素的和,被作为类 ndarray的方法,如下所示:


由前边的示例,貌似可以得出,应用于数组的那些运算就像是进行Python的列表(list)运算,好像数组的shape可以忽略似的,其实,我们可以通过axis参数指定按照哪一维进行运算的,就像Matlab下按行还是按列计算一样,其中axis=0表示按列运算,axis=1表示按行运算,如下所示:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值