python 数组,list的+ 与numpy.array的+-*/

以前一直以为两个array的加法是对应相加 例:[1,2,3]+[1,2,3]=[2,4,6]

现在才发现我把它和numpy.array混淆了。

对于普通python中的array或list结构:+与extend是一个意思。

a = [1,2,3]  b=[1,2,3]   a-b,a*b,a/b都不能运算。n*a可以:

相比之下,np.array更接近于数学运算,np.array的乘类似于点乘

以上是维数相等的情况,维数不等时,np,array还可以利用广播机制进行运算

广播的原则:如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符,或其中的一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。广播主要发生在两种情况,一种是两个数组的维数不相等,但是它们的后缘维度的轴长相符,另外一种是有一方的长度为1。

数组维度不同,后缘维度的轴长相符

此时-1维都为3,可以广播,在这个例子当中是将arr2沿着0轴进行扩展。

image

image 

从上面的图可以看到,(3,4,2)和(4,2)的维度是不相同的,前者为3维,后者为2维。但是它们后缘维度的轴长相同,都为(4,2),所以可以沿着0轴进行广播。

数组维度相同,其中有个轴为1

arr1的shape为(4,3),arr2的shape为(4,1),它们都是二维的,但是第二个数组在1轴上的长度为1,所以,可以在1轴上面进行广播,如下图所示:

image 

在这种情况下,两个数组的维度要保证相等,其中有一个轴的长度为1,这样就会沿着长度为1的轴进行扩展。这样的例子还有:(4,6)和(1,6) 。(3,5,6)和(1,5,6)、(3,1,6)、(3,5,1),后面三个分别会沿着0轴,1轴,2轴进行广播。

广播机制部分参考:https://www.cnblogs.com/jiaxin359/p/9021726.html 

文字图片来源:《利用python进行数据分析》 第十一章 广播 

发布了44 篇原创文章 · 获赞 0 · 访问量 1895

猜你喜欢

转载自blog.csdn.net/weixin_39331401/article/details/104711122