zoukankan      html  css  js  c++  java
  • 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 的两个特性:矢量化和传播性。

    转载请声明https://www.cnblogs.com/wdzn/
  • 相关阅读:
    关于H5中的Canvas API的探索
    leetcode297 Serialize and Deserialize Binary Tree
    CF1187E Tree Painting
    CF1187D Subarray Sorting
    CF1183E/H Subsequences
    kickstart2019 round_C B. Circuit Board
    leetcode85 Maximal Rectangle
    leetcode84 Largest Rectangle in Histogram
    kickstart2019 round_A B. Parcels
    蓝桥杯 正则问题
  • 原文地址:https://www.cnblogs.com/wdzn/p/12264593.html
Copyright © 2011-2022 走看看