标签:简单的 数据存储 大小 编码 简单例子 速度 示例 操作 pen
在科学计算中,关于序列大小和速度的问题尤为重要。
作为一个简单的例子,有两个相同长度的序列,将前一序列与后一序列中的相应元素相乘。
如果数据存储在两个 Python 列表 a
和 b
中,则可以遍历每个元素:
c = []
for i in range(len(a)):
c.append(a[i] * b[i])
例 1 中获得了正确的答案,但是如果 a
和 b
都包含数百万个数字,则 Python 是低效的。
可以通过 C 语言加快处理的速度:
for (i = 0; i < rows; i++):{
c[i] = a[i] * b[i];
}
例 2 节省了解释 Python 代码和操作 Python 对象所需的所有开销,但牺牲了使用 Python 编写代码的好处。
此外,所需的编码工作随着数据维数的增加而增加。
例如,在二维数组的情况下,C 语言代码将变为:
for (i = 0; i < rows; i++):{
for (j = 0;j < columns; j++):{
c[i][j] = a[i][j] * b[i][j];
}
}
NumPy 比上面更好:当涉及 ndarray
时,元素之间的操作是默认的,这个操作由预编译的 C 代码快速执行。
例如:
c = a * b
以接近 C 的速度执行前面示例的所有操作,但是从 Python 中获得了代码的简单性。
此展现了 NumPy 的两个特性:矢量化和传播性。
标签:简单的 数据存储 大小 编码 简单例子 速度 示例 操作 pen
原文地址:https://www.cnblogs.com/wdzn/p/12264593.html