建设银行交易明细查询网站,怎做网站转app,柳市哪里有做网站推广,我的世界做披风网站文章目录 1. 导入NumPy2. 创建NumPy数组3. 数组的算术运算4. N维数组4.1 创建和操作多维数组4.2 高维数组 5. NumPy的广播功能5.1 基本广播示例5.2 更复杂的广播示例 6. 访问数组元素6.1 基于索引的访问6.2 遍历数组6.3 基于条件的访问6.4 高级索引6.5 性能考虑 在深度学习和数… 文章目录 1. 导入NumPy2. 创建NumPy数组3. 数组的算术运算4. N维数组4.1 创建和操作多维数组4.2 高维数组 5. NumPy的广播功能5.1 基本广播示例5.2 更复杂的广播示例 6. 访问数组元素6.1 基于索引的访问6.2 遍历数组6.3 基于条件的访问6.4 高级索引6.5 性能考虑 在深度学习和数据科学的领域数学运算尤为重要而NumPy库则是Python中处理这些计算的核心工具。NumPyNumerical Python的缩写提供了一个强大的数组对象numpy.ndarray它是多维数组的核心并带有大量的便捷方法使得数学运算变得简洁而高效。 1. 导入NumPy
NumPy并不是Python标准库的一部分需要单独安装和导入。在Python中通过简单的导入声明可以轻松访问NumPy库
import numpy as np通过np这个别名来使用NumPy的各种功能提高代码的可读性和易用性。
2. 创建NumPy数组
NumPy的核心功能之一是其数组处理能力。通过np.array()函数可以将Python的列表转换成numpy.ndarray对象即NumPy数组
x np.array([1.0, 2.0, 3.0])
print(x)
# 输出: [1. 2. 3.]3. 数组的算术运算
NumPy数组支持元素级的算术运算这意味着运算会应用到数组中的每一个元素上。
x np.array([1.0, 2.0, 3.0])
y np.array([2.0, 4.0, 6.0])在NumPy中进行基本运算如加法、减法、乘法和除法时这些操作是按元素进行的
print(x y) # 对应元素相加[3. 6. 9.]
print(x - y) # 对应元素相减[-1. -2. -3.]
print(x * y) # 对应元素相乘[2. 8. 18.]
print(x / y) # 对应元素相除[0.5 0.5 0.5]重要的是进行这些操作的两个数组必须具有相同的形状或兼容的形状。如果形状不匹配NumPy会尝试广播数组以匹配形状如果无法广播则会抛出一个错误广播在后面有解释
此外NumPy也支持数组与标量之间的运算这表现在所谓的广播broadcast特性上允许小规模数据结构与大规模数据结构间进行算术运算
print(x / 2.0) # 每个元素除以2[0.5 1.0 1.5]4. N维数组
NumPy提供了强大的多维数组支持这使其在科学计算中发挥了至关重要的作用。它能够处理从一维数组向量、二维数组矩阵到更高维度的数组张量用于表示各种复杂的数据结构。
4.1 创建和操作多维数组
以二维数组为例可以轻松地创建和进行算术运算
import numpy as np# 创建一个2x2的二维数组
A np.array([[1, 2], [3, 4]])
print(A)
# 输出:
# [[1 2]
# [3 4]]# 查看数组的形状和数据类型
print(Shape:, A.shape) # Shape: (2, 2)
print(Data type:, A.dtype) # Data type: int64# 创建另一个2x2的二维数组
B np.array([[3, 0], [0, 6]])# 数组的加法和元素级乘法
print(A B , A B)
# 输出:
# A B [[ 4 2]
# [ 3 10]]
print(A * B , A * B)
# 输出:
# A * B [[ 3 0]
# [ 0 24]]在NumPy中数组的算术运算是元素级的意味着操作会在两个数组的相应元素间进行。此外NumPy的广播功能允许执行如标量与数组之间的运算这在实际应用中非常有用
# 标量与数组的乘法
print(A * 10 , A * 10)
# 输出:
# A * 10 [[10 20]
# [30 40]]4.2 高维数组
NumPy的能力不限于一维或二维数组。它可以创建和操作任何高度的多维数组。例如三维或更高维度的数组通常用于数据科学和机器学习中处理如图像数据宽度、高度、颜色通道或时间序列数据数据点、时间步长、特征数量
# 创建一个3维数组
Z np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9]],[[10, 11, 12], [13, 14, 15], [16, 17, 18]],[[19, 20, 21], [22, 23, 24], [25, 26, 27]]])print(Z)
# 可以访问特定的层、行、列
print(Access a specific element:, Z[1, 2, 0]) # 访问第二层第三行第一个元素165. NumPy的广播功能
NumPy的广播功能是其数组操作中一个非常强大的特性允许在执行算术运算时自动扩展一个较小的数组以匹配一个较大数组的形状无需显式复制数据。
5.1 基本广播示例
当使用标量与数组进行运算时标量会被广播到数组的每个元素上
import numpy as npA np.array([[1, 2], [3, 4]])
# 标量与二维数组的乘法
result A * 10
print(result)
# 输出:
# [[10 20]
# [30 40]]在这个例子中标量10被广播成与数组A相同的形状然后与数组中的每个元素相乘。
5.2 更复杂的广播示例
广播功能也适用于维度不一致但兼容的数组之间。例如当一维数组与二维数组相乘时一维数组会沿着缺少的维度被扩展以匹配较大的数组
B np.array([10, 20])
# 一维数组与二维数组的元素级乘法
result A * B
print(result)
# 输出:
# [[10 40]
# [30 80]]一维数组B的每个元素被广播到了A的对应行上使得乘法能够按元素执行。
6. 访问数组元素
NumPy数组提供了多种灵活的元素访问方法这包括基于索引的访问以及基于条件的访问极大地简化了数据操作和处理。
6.1 基于索引的访问
在NumPy数组中每个元素的位置由从零开始的索引确定。可以通过指定位置的索引来访问单个数组元素或者通过切片来访问数组的一个区段
import numpy as npX np.array([[51, 55], [14, 19], [0, 4]])
print(第0行:, X[0]) # 访问第一行
# 输出: [51 55]
print(位置(0,1)的元素:, X[0][1]) # 访问第一行的第二个元素
# 输出: 556.2 遍历数组
NumPy数组也支持使用循环来遍历元素例如使用for循环遍历每一行
for row in X:print(row)
# 输出:
# [51 55]
# [14 19]
# [0 4]6.3 基于条件的访问
NumPy支持使用条件表达式来选择数组中满足特定条件的元素。这种方法返回一个布尔数组可以用于索引原数组
# 找出所有大于15的元素
filtered X[X 15]
print(大于15的元素:, filtered)
# 输出: [51 55 19]6.4 高级索引
NumPy允许使用数组索引来访问数据这对于从数组中选择一个非连续的元素子集特别有用
X_flat X.flatten() # 将X转换为一维数组
print(转换后的一维数组:, X_flat)
# 输出: [51 55 14 19 0 4]indices np.array([0, 2, 4])
selected_elements X_flat[indices] # 通过索引数组访问元素
print(选定索引的元素:, selected_elements)
# 输出: [51 14 0]6.5 性能考虑
尽管Python是一种动态类型的语言其运算速度通常不如C和C这样的静态类型语言但是NumPy的大部分数值计算都是用C或C实现的。这意味着NumPy能够提供接近于编译型语言的性能同时保持Python语言的灵活性和易用性。因此使用NumPy可以在不牺牲性能的前提下利用Python便捷的语法进行高效的数学和逻辑运算。