, 然后按元素位置相加 , 直接输入 data + ones
即可:
同理 , 不只是加法 , 减、乘、除都是没有问题 , 甚至可以像下面 data * 1.6
一样直接很方便的统一运算:
广播机制这里引入了 NumPy 的 广播机制
, 上面的例子中 , 标量 1.6
被拉伸为张量 [12
的相同尺寸(2)的向量 。 标量被拉伸以后的张量尺寸与待运算值完全适配 , 传递到空缺位进行计算 。 这个规则在某些地方被称为 “低维有1”
, 即 数组维度相同 , 其中有个轴为1。
但其实个人觉得没有必要这么去理解!
我们可以简单的解释为:广播主要发生在两种情况 , 一种是两个数组的维数不相等 , 但是它们的后缘维度的轴长相符 , 另外一种是有一方的长度为1 。 再简化一点 , 两个数组在任意轴上长度或维度(或长度+维度)相等 , 则可以触发广播 。
后面的部分我们再去详细分析 。
索引与聚合NumPy 的索引应该说非常灵活了 , 直接上图 , 非常清晰:
常见的聚合操作 sum
、min
、max
可以从下图看到运算方式:
当然 , NumPy 还支持以下聚合操作:
1 2 3 45 | np.prod(big_array) # 求数组中所有元素的乘积 np.mean(big_array) # 求数组中所有元素的平均值 np.median(big_array) # 求数组中所有元素的中位数 np.var(big_array) # 求数组中所有元素的方差 np.std(big_array) # 求数组中所有元素的标准差 |
创建矩阵我们可以使用
np.array([[12
[34
)
的方式来创建一个矩阵 , 也可以使用上个部分提到的 ones()
、zeros()
和 random.random()
方法来创建:矩阵运算如果矩阵尺寸完全一致 , 那么用算数运算符 加减乘除 来处理自然是不在话下 。
但是如果对不同大小的矩阵执行的话 , 就需要
广播机制
了 , 比如下面的例子:这里我们正好可以再深入理解
广播机制
。 这里的 ones_row
是二维数组 , 但是每个维度只有1个元素 , 那么我们可以理解为:data
和 ones_row
两个数组在维度上相等 , 可以触发广播 。点乘虽然在这里提点乘方法
dot()
, 但是不代表他必须由矩阵使用 。 在直接上例子说明更好理解:细心观察 , 图里特意标红了
3
, 因为该图的作者在强调两个矩阵的临近边必须有相同数量的维度 。简单解析一下点乘的规则 。 如果我们计算
np.dot(A B)
, A为二维m*n
的矩阵 , B必须为n*l
的矩阵 , 也就是说A有多少列 , B就必须有多少行 , 否则无法运算 。 下面的图可以简单说明原理:也就是说 , 可以把开始的那个点乘例子理解为:
矩阵索引与聚合矩阵的索引使得我们对数据的操作更加得心应手:
至于聚合 , 除了之前一维数组提到的基本操作外 , 我们还可以给出
axis
参数来指定行间、列间的聚合 。 例如:矩阵旋转与重塑又是两个超实用的方法 。 首先是旋转矩阵 , 例如需要对两个矩阵执行点乘运算并对齐它们共享的维度时 , 我们就可以用方法
T
来执行:在某些情况下 , 我们得到的数据(例如问卷采集、爬虫等)并不符合计算模型的要求 , 这是我们就可以用
- |一些提高你学习效率的APP
- 小米13 Pro深度评测:让人拍摄起来就欲罢不能的顶级徕卡影像旗舰
- 3岁学习微积分,8岁出国留学,智商高达210的金雄熔,现状如何?
- 小米13Pro深度评测:让人拍摄起来就欲罢不能的顶级徕卡影像旗舰如今小米手机的影像能力|小米13pro深度评测:让人欲罢不能的顶级徕卡影像旗舰
- 机器学习|逆向思维:普通人赚钱只能靠简单一招,不必重来才是快
- 湖南联百学习自媒体真的好吗?宣传是真实的吗?
- 本文转自:封面新闻蒋璟璟萧伯纳说过|封面评论|“技能交换”风靡网络,学习式社交提供了另一种可能性
- C++|零基础学习C++, AI一胖. 赋值语句
- 深度学习|短视频起号干货知识分享
- 优秀!现在去KTV的门槛都这么高了?还不快去学习新技能!