前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Numpy 修炼之道 (4)—— 基本运算操作

Numpy 修炼之道 (4)—— 基本运算操作

作者头像
abs_zero
修改2018-05-26 14:42:25
6260
修改2018-05-26 14:42:25
举报
文章被收录于专栏:AI派

推荐阅读时间:4min~6min 文章内容:Numpy基本运算操作

上一篇:Numpy 修炼之道 (3)—— 数据类型

Numpy 中数组上的算术运算符使用元素级别。最后的结果使用新的一个数组来返回。

代码语言:javascript
复制
>>> 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])
>>> a<35
array([ True, True, False, False], dtype=bool)

需要注意的是,乘法运算符*的运算在NumPy数组中也是元素级别的(这与许多矩阵语言不同)。如果想要执行矩阵乘积,可以使用dot函数:

代码语言:javascript
复制
>>> A = np.array( [[1,1], [0,1]] )
>>> B = np.array( [[2,0], [3,4]] )
>>> A
array([[1, 1],
       [0, 1]])
>>> B
array([[2, 0],
       [3, 4]])
>>> A*B                         # 元素乘积(elementwise product)
array([[2, 0],
       [0, 4]])
>>> A.dot(B)                    # 矩阵相乘(matrix product)
array([[5, 4],
       [3, 4]])
>>> np.dot(A, B)                # 矩阵相乘的另一种方式(another matrix product)
array([[5, 4],
       [3, 4]])

某些操作(如+=*=)可以修改现有数组,而不是创建新数组。

代码语言:javascript
复制
>>> a = np.ones((2,3), dtype=np.int32)
>>> b = np.random.random((2,3))
>>> a *= 3
>>> a
array([[3, 3, 3],
       [3, 3, 3]])
>>> a.dtype
dtype('int32')
>>> b.dtype
dtype('float64')
>>> b += a
>>> b
array([[ 3.42443069,  3.78421247,  3.46533145],
       [ 3.30761202,  3.1504406 ,  3.23310437]])
>>> a += b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Cannot cast ufunc add output from dtype('float64') to dtype('int32') with casting rule 'same_kind'

当使用不同类型的数组操作时,结果数组的类型对应于更一般或更精确的数组(称为向上转换的行为)。

由于定义 a时,数据类型指定为np.int32,而 a+b 生成的数据类型为 np.float64,所以自动转换出错。

相关推荐:

Numpy 修炼之道(1) —— 什么是 Numpy

Numpy 修炼之道 (2)—— N维数组 ndarray

Numpy 修炼之道 (3)—— 数据类型

作者:无邪,个人博客:脑洞大开,专注于机器学习研究。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 脑洞科技栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档