NumPy————NumPy广播机制的学习笔记

1 致谢

感谢网友“FINTHON”的帮助,

原文链接如下:

https://finthon.com/numpy-broadcast/

2 前言

今天在学习K-means算法~

想用一下NumPy中的广播机制,试了一次总是报错,不知道怎么回事,于是就咨询了一下度娘~

然后看到了“FINTHON”的博文,写的真好呀,通俗易懂~

3 如何判断array运算是否可以使用广播

今天用了几次广播总是报错,后来还是看到“FINTHON”的博文才懂了,

其实判断array运算是否可以使用广播的规则是这样的:

将两个array的维度大小右对齐,然后比较对应维度上的数值,如果数值相等或其中有一个为1或者为空,则能进行广播运算,并且输出的维度大小为取数值较大的维度;否则就不能使用广播机制。

我们来看几个例子,

首先是数组b的维数低于数组a,

数组a大小为(2, 3)
数组b大小为(1,)
首先右对齐:
   2   3
       1
----------
   2   3
所以最后两个数组运算的输出大小为:(2, 3)

再举一个例子,数组a与数组b的维数不同,但是某些维度上的长度为1,

数组a大小为(2, 1, 3)
数组b大小为(4, 1)
首先右对齐:
 2  1  3
    4  1
----------
 2  4  3
所以最后两个数组运算的输出大小为:(2, 4, 3)

再来举一个不能使用广播的例子,

数组a大小为(3, 6)
数组b大小为(1, 2)
首先右对齐:
    3  6
    1  2
----------
2跟5不匹配,此时就不能使用广播机制

可以看到,虽然这里(1,2)分别是(3,6)的最大公约数,但是仍然无法使用广播。

4 NumPy广播应当支持最大公约数的扩充

我觉得除了维度的长度为1可以扩充之外,当维数为整数倍关系(或最大公约数)时,也应该是可以扩充的,希望NumPy在这一点上可以改进并支持。

5 NumPy广播

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值