基本 Numpy 操作概述
介绍
创建数组后,您就可以执行基本的 Numpy 操作。本指南将为您提供一组可用于操作数组的工具。如果您想了解创建数组的不同技术,请参阅我之前的指南:创建 Numpy 数组的不同方法。
一维数组上的运算
在 Numpy 中使用算术运算符
让我们看一个一维数组。我有 2 个数组,array1 和 array2,通过两种不同的技术创建:
array1 = np.array([10,20,30,40,50])
array2 = np.arange(5)
array2
输出:
array([0, 1, 2, 3, 4])
您可以对这些数组执行算术运算。例如,如果您添加数组,算术运算符将按元素进行。输出将是相同维度的数组。
array3 = array1 + array2
array3
输出:
array([10, 21, 32, 43, 54])
以下是其图示:
如果您尝试添加具有相同维度但元素数量不同的数组,则会收到错误。例如:
array4 = np.array([1,2,3,4])
array1 + array4
输出:
**ValueError**: operands could not be broadcast together with shapes (5,) (4,)
您可以使用标量值对数组运行算术运算。例如,此代码将数组的每个元素乘以 2。
array1*2
输出:
array([ 20, 40, 60, 80, 100])
要求数字的平方,请使用**。
array1**2
输出:
array([ 100, 400, 900, 1600, 2500], dtype=int32)
如果您想要对各个元素求立方,甚至求得更高的值,请使用幂函数。在这里,数组的每个元素都将被提升到 3 次方。
np.power(array1,3)
输出:
array([ 1000, 8000, 27000, 64000, 125000], dtype=int32)
将 Numpy 与条件表达式结合使用
您可以使用条件来查找符合条件的值。由于 array1 是一个数组,因此条件操作的结果也是一个数组。当我们执行条件检查时,输出是一个布尔值数组。
array5 = array1 >= 30
array5
输出:
array([False, False, True, True, True])
您还可以将这个布尔数组传递给主数组来获取符合条件的值。
array1[array5]
输出:
array([30, 40, 50])
您无需创建单独的布尔数组,而是可以直接在主数组上指定条件操作。如下所示:
array1[array1 >= 30]
输出:
array([30, 40, 50])
这是一个简单的单步过程。首先,评估条件运算,然后将条件运算的结果传递到主数组以获取过滤结果。
二维数组上的运算
Numpy 二维数组的算术运算符
让我们创建两个二维数组,A 和 B。
A = np.array([[3,2],[0,1]])
B = np.array([[3,1],[2,1]])
并打印它们:
print(A)
输出:
[3 2]
[0 1]
print(B)
输出:
[3 1]
[2 1]
注意:如果打印数组,则输出中不会出现数组关键字。
现在,我们尝试将数组相加。不出所料,数组中各个位置的元素被加在一起了。
A+B
输出:
array([[6, 3],
[2, 2]])
图示如下。
所有算术运算都以类似的方式工作。您还可以对数组进行乘法或除法。运算按元素执行。
A*B
输出:
array([[9, 2],
[0, 1]])
与 C# 和 Java 等编程语言类似,你也可以在 Numpy 数组上使用 +=、*= 等运算符。例如,我们有数组:
A
输出:
array([[3, 2],
[0, 1]])
对数组“A”执行 += 操作相当于将数组的每个元素与指定的值相加。因此,
A +=2
输出:
array([[5, 4],
[2, 3]])
请注意,此操作是在原地执行的。同样,您可以使用其他算术运算,如 -= 和 \ *=。
矩阵乘法
要执行典型的矩阵乘法(或矩阵乘积),可以使用运算符“@”。
A @ B
输出:
array([[13, 5],
[ 2, 1]])
它的工作原理如下:输出中的单元格 (1,1)(值:13)是矩阵 A(二维数组 A)中第 1 行与矩阵 B 中第 1 列的和积。
类似地,输出中的单元格 (1,2) 是矩阵 A 中第 1 行与矩阵 B 中第 2 列的和积。
依此类推,所有单元格的值都会被填充。
以下是单元格 (1,1) 的图形表示:
也可以通过函数dot</st
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~