目录
0.环境
1.背景简介
2.ndarray的广播功能
2.1概念
2.2意义
2.3使用前提
2.4举例
2.5完整代码
0.环境
windows + jupyter notebook验证代码
1.背景简介
我是在查询【ndarray和array的区别】时,看到了“广播功能”这个词,之前只在网络的相关定义上了解广播这个词,但没想到,数组上也有应用,但其完全不是一种意思,特此记录一下使用方式。
简介一下ndarray和array的区别:
在Python中,array是Python标准库中提供的一种数组类型,而ndarray是NumPy库中提供的一种多维数组类型。虽然它们都可以用来存储数值数据,但它们之间存在一些区别:
1)array类型只能存储一维数组,而ndarray类型可以存储多维数组。
2)array类型只能存储相同类型的数据,而ndarray类型可以存储不同类型的数据。
3)ndarray类型支持广播功能,这使得可以对不同形状的数组进行数学运算。array类型不支持广播功能。
4)ndarray类型提供了许多用于数学和科学计算的函数和方法,例如线性代数、傅里叶变换、随机数生成等等。array类型只提供了一些基本的数组操作方法。
2.ndarray的广播功能
2.1概念
当对两个形状不同的数组进行算术运算时,例如加法、减法、乘法和除法,NumPy会自动将较小的数组广播(broadcast)到较大数组的形状,以匹配它们的形状。这种自动广播的功能被称为广播(broadcasting)。
2.2意义
这意味着,您可以对不同形状的数组进行数学运算,而无需显式地扩展数组的形状或使用循环来匹配它们的形状。这使得在NumPy中进行数学运算更加方便和高效。
2.3使用前提
数组中的元素(元组)的维数需要相等,比如下面的例子,多维数组中共有三个元组,[1,2,3]、[4,5,6]、[7,8,9],每个里面都是三个元素,那么与之相计算的数组,也必须是三个元素。一旦a中增加元组的维数([1.2.3]变成[1,2,3,4]),或者b中增加元组的维数(变成[10,20,30,40]),都会导致编译器的报错。
2.4举例
假设有一个形状为(3, 3)的数组和一个形状为(1, 3)的数组a和b:
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
b = np.array([[10, 20, 30]])
可以使用广播功能将数组
b
广播到与数组a
相同的形状,然后进行数学运算:
c = a + b
print(c)
结果:
import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
b = np.array([[10, 20, 30]])
c = a + b
print(c)
解释:在这个例子中,数组
b
被广播到一个形状为(3, 3)的数组,以匹配数组a
的形状。然后,对两个数组进行了加法运算。
2.5完整代码
import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
b = np.array([[10, 20, 30]])
c = a + b
print(c)
--END--