我的博客

1.1.1.3、简单例子

目录 # 简单例子

1、使用 Python 的列表

在科学计算中,关于序列大小和速度的问题尤为重要。

作为一个简单的例子,有两个相同长度的序列,将前一序列与后一序列中的相应元素相乘。

如果数据存储在两个 Python 列表 ab 中,则可以遍历每个元素:

c = []
for i in range(len(a)):
    c.append(a[i] * b[i])

2、C 语言加速

例 1 中获得了正确的答案,但是如果 ab 都包含数百万个数字,则 Python 是低效的。

可以通过 C 语言加快处理的速度:

for (i = 0; i < rows; i++):{
    c[i] = a[i] * b[i];
}

3、C 语言处理二维数组

例 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];
    }
}

4、使用 NumPy

NumPy 比上面更好:当涉及 ndarray 时,元素之间的操作是默认的,这个操作由预编译的 C 代码快速执行。

例如:

c = a * b

以接近 C 的速度执行前面示例的所有操作,但是从 Python 中获得了代码的简单性。

此展现了 NumPy 的两个特性:矢量化和传播性。

posted @ 2020-02-05 17:25  姜道义  阅读(272)  评论(0编辑  收藏  举报