numpy的使用说明(五):数组的广播机制、数组元素的底层存储(一)

简介: numpy的使用说明(五):数组的广播机制、数组元素的底层存储(一)

一、数组的广播机制

1、先来看几个例子

a = np.array([1,3,2,5])
display(a.shape)
b = np.array([4])
display(b.shape)
c = np.arange(1,13).reshape(3,4)
display(c)
display(c.shape)


结果如下:

image.png


2、numpy官网关于广播机制的一句原话

 

In order to broadcast ,the size of the trailing axes for both arrays 
in an operation must either be the same size or one of them must be one.
"翻译如下"
    为了更够广播,进行操作的两个数组的尾部维度必须相同,或者其中一个数组的尾部维度是1。
    这个你可能会很蒙,毕竟是英译过来的,说不定还没有翻译到作者所写的那层意思,因此你简
    单了解一下这个就行。下面我们会对广播的使用做更为详细的总结!!!


1)什么是广播机制?

概念:广播(Broadcast)是numpy对不同形状(shape)的数组,进行数值计算的方式,对数组的算术运算通常在相对应的元素上进行。

注意:不同形状的数组元素之间进行数值计算,会触发广播机制;同种形状的数组元素之间,直接是对应元素之间进行数值计算。

2)数组与标量之间的运算

① 创建三个不同维度的数组


a = 2
display(a)
b = np.array([1,2])
display(b)
c = np.arange(1,7).reshape(3,2)
display(c)
c1 = np.arange(1,5).reshape(2,2)
display(c1)
d = np.arange(1,9).reshape(2,2,2)
display(d)


结果如下:

image.png

② 标量和一维、二维、三维数组之间的广播运算

image.png

③ 一维数组和二维数组之间的广播运算

image.png

⑤ 二维数组和三维数组元素之间的广播运算


image.png3)图示说明:什么样的数据才可以启用广播机制?

① 首先,我们分别构造了几个数组;

image.png

注意:对于一个标量来说,我们可以将这一个数字的形状看成是一行一列;对于一个一维数组,我们可以将它的形状看成是一行多列;


② 广播机制的详细图解

image.png

结论:


不同形状的数组之间能不能触发广播机制,主要看对应形状的每一个位置上的数字,是否满足如下要求。

① 要么对应位置上的数字完全一致,可以触发广播机制,比如说第Ⅵ组;

② 对应位置上的数字要是不一样,那么对应位置上,必须有一个数字是1,比如说Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ;

如果对应位置上的数字不仅不相同,且没有任何一个的数字为1,那么就不能使用广播机制,比如说Ⅶ。


相关文章
|
19天前
|
Python
Numpy学习笔记(四):如何将数组升维、降维和去重
本文介绍了如何使用NumPy库对数组进行升维、降维和去重操作。
28 1
|
27天前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
52 10
|
19天前
|
Python
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
NumPy库中的`np.concatenate`和`np.append`函数,它们分别用于沿指定轴拼接多个数组以及在指定轴上追加数组元素。
23 0
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
|
22天前
|
Python
使用 NumPy 进行数组操作的示例
使用 NumPy 进行数组操作的示例
31 2
|
27天前
|
索引 Python
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧1
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
78 4
|
27天前
|
机器学习/深度学习 并行计算 调度
CuPy:将 NumPy 数组调度到 GPU 上运行
CuPy:将 NumPy 数组调度到 GPU 上运行
42 1
|
2月前
|
API Python
Numpy 数组的一些集合操作
Numpy 数组的一些集合操作
28 0
|
2月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
53 0
|
3月前
|
机器学习/深度学习 数据处理 计算机视觉
NumPy实践宝典:Python高手教你如何轻松玩转数据处理!
【8月更文挑战第22天】NumPy是Python科学计算的核心库,专长于大型数组与矩阵运算,并提供了丰富的数学函数。首先需安装NumPy (`pip install numpy`)。之后可通过创建数组、索引与切片、执行数学与逻辑运算、变换数组形状及类型、计算统计量和进行矩阵运算等操作来实践学习。NumPy的应用范围广泛,从基础的数据处理到图像处理都能胜任,是数据科学领域的必备工具。
51 0
|
2月前
|
机器学习/深度学习 算法 数据可视化
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
特征工程是机器学习流程中的关键步骤,通过将原始数据转换为更具意义的特征,增强模型对数据关系的理解能力。本文重点介绍处理数值变量的高级特征工程技术,包括归一化、多项式特征、FunctionTransformer、KBinsDiscretizer、对数变换、PowerTransformer、QuantileTransformer和PCA,旨在提升模型性能。这些技术能够揭示数据中的潜在模式、优化变量表示,并应对数据分布和内在特性带来的挑战,从而提高模型的稳健性和泛化能力。每种技术都有其独特优势,适用于不同类型的数据和问题。通过实验和验证选择最适合的变换方法至关重要。
41 5
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征