最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

python中Numpy的广播原则的代码解析

来源:懂视网 责编:小采 时间:2020-11-27 14:21:06
文档

python中Numpy的广播原则的代码解析

python中Numpy的广播原则的代码解析:本篇文章给大家带来的内容是关于python中Numpy的广播原则的代码解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。为了了解这个原则,首先我们来看一组例子:# 数组直接对一个数进行加减乘除,产生的结果是数组中的每个元素都会加减乘除
推荐度:
导读python中Numpy的广播原则的代码解析:本篇文章给大家带来的内容是关于python中Numpy的广播原则的代码解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。为了了解这个原则,首先我们来看一组例子:# 数组直接对一个数进行加减乘除,产生的结果是数组中的每个元素都会加减乘除

本篇文章给大家带来的内容是关于python中Numpy的广播原则的代码解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

为了了解这个原则,首先我们来看一组例子:

# 数组直接对一个数进行加减乘除,产生的结果是数组中的每个元素都会加减乘除这个数。
In [12]: import numpy as np
In [13]: a = np.arange(1,13).reshape((4, 3))
In [14]: a * 2
Out[14]: array([[ 2, 4, 6],
 [ 8, 10, 12],
 [14, 16, 18],
 [20, 22, 24]])
# 接下来我们看一下数组与数组之间的计算
In [17]: b = np.arange(12,24).reshape((4,3))
In [18]: b
Out[18]: array([[12, 13, 14],
 [15, 16, 17],
 [18, 19, 20],
 [21, 22, 23]])
In [19]: a + b
Out[19]: array([[13, 15, 17],
 [19, 21, 23],
 [25, 27, 29],
 [31, 33, 35]])
In [20]: c = np.array([1,2,3])
In [21]: a+c
Out[21]: array([[ 2, 4, 6],
 [ 5, 7, 9],
 [ 8, 10, 12],
 [11, 13, 15]])
In [22]: d = np.arange(10,14).reshape((4,1))
In [23]: d
Out[23]: array([[10],
 [11],
 [12],
 [13]])
In [24]: a + d
Out[24]: array([[11, 12, 13],
 [15, 16, 17],
 [19, 20, 21],
 [23, 24, 25]])
# 从上面可以看出,和线性代数中不同的是,m*n列的m行的一维数组或者n列的一维数组也是可以计算的。

这是为什么呢?这里要提到numpy的广播原则:

如果两个数组的后缘维度(从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为它们是广播兼容的。广播会在缺失维度和(或)轴长度为1的维度上进行。

在上面的代码中,a的维度是(4,3),c的维度是(1,3);d的维度是(4,1)。所以假设有两个数组,第一个的维度是(x_1, y_1, z_1),另一个数组的维度是(x_2, y_2, z_2),要判断这两个数组能不能进行计算,可以用如下方法来判断:

if z_1 == z_2 or z_1 == 1 or z_2 == 1:
 if y_1 == y_2 or y_1 == 1 or y_2 == 1:
 if x_1 == x_2 or x_1 == 1 or x_2 == 1:
 可以运算
 else:
 不可以运算
 else:
 不可以运算
else:
 不可以运算

这里需要注意:(3,3,2)和(3,2)是可以运算的,因为对于二维数组(3,2)也可以表示为(1,3,2),套用上述的规则是完全适用的,同理:(4,2,5,4)和(2,1,4)也是可以进行运算的。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

python中Numpy的广播原则的代码解析

python中Numpy的广播原则的代码解析:本篇文章给大家带来的内容是关于python中Numpy的广播原则的代码解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。为了了解这个原则,首先我们来看一组例子:# 数组直接对一个数进行加减乘除,产生的结果是数组中的每个元素都会加减乘除
推荐度:
标签: 广播 分析 原则
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top