NumPy 上手一个例子 vectorsum.py

  NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。据说NumPy将Python相当于变成一种免费的更强大的MatLab系统。NumPy本身用C实现。

  翻了一下PACKT出版社的学习指南,第一章有一个对比计算效率的例子拿来作为上手。

  结果是,在本机32bit的python上跑出来的效果跟书上相差很多,首先是32bit的python整形上限跟64bit相差很多:

>>> sys.maxsize
2147483647

另外还有就是datetime计时精读存在问题。

不管怎样,就当是尝试一把吧,

代码在下面,问题解决 stackoverflow

#-*- coding:utf-8 -*-
import sys
from datetime import datetime
import numpy as np
"""
 Input format:  python vectorsum.py n
 n: the excepted size for the vector
"""

def numpsysum(n):
    a = np.arange(n) ** 2
    b = np.arange(n) ** 3
    c = a + b
    return c

def pythonsum(n):
    a = range(n)
    b = range(n)
    c = []
    for i in range(len(a)):
        a[i] = i ** 2
        b[i] = i ** 3
        c.append(a[i] + b[i])
    return c

size = int(sys.argv[1])
start = datetime.now()
c = pythonsum(size)
delta = datetime.now() - start
print "The last 2 elements of the pythonsum is:",c[-2:]
print "Python method cost time : ",delta.microseconds
start = datetime.now()
c = numpsysum(size)
delta = datetime.now() - start
print "The last 2 elements of the numpysum is:",c[-2:]
print "NumPy method cost time : ",delta.microseconds

暂时没有大规模处理的需求。留念~

注:Linux上自带的python maxsize是 9223372036854775807

时间: 2024-08-07 02:22:32

NumPy 上手一个例子 vectorsum.py的相关文章

python3 元类编程的一个例子

[引子] 虽然我们可以通过"class"语句来定义"类",但是要想更加细粒度的控制"类"的创建,要使用元类编程才能实现. 比如说我们要实现这样的一个约束.所有项目中用到的类都应该要为它定义的方法提供文档字符字符串.有两条可行 的路径 1):依赖工程师的自觉.自律 让他们在定义每一个方法的时候都为方法增加文档字符串, 2):通过元类来做一些 控制,如果工程师没有为方法提供文档字符,那么就直接报错,直到工程师为方法提供字符串为止. [实现1] 依赖工

从一个例子开始认识Kubernetes

对于绝大多数刚刚接触Kubernetes的人来说,很难顺利的上手和实践.所以我们从一个例子开始初步的对Kubernetes有一个了解:JSP页面通过JDBC直接访问MySQL数据库并展示数据. 这个例子中我们需要启动连个容器:WebApp容器和MySQL容器. 废话不多说,我们现在开始... 第一步:环境准备 这一步我们就不在这里赘述了,网上教程一搜一大把... 关闭防火墙.swap.SELinux,安装Docker.etcd和Kubernetes组件等等... 下载MySQL和Tomcat镜像

iOS 中 #error宏 的使用的一个例子

头文件中如下定义宏: /** * @brief 默认空间名(必填项) */ #error 必填项 #define DEFAULT_BUCKET @"" /** * @brief 默认表单API功能密钥 (必填项) */ #error 必填项 #define DEFAULT_PASSCODE @"" 类的实现中使用: self.bucket = DEFAULT_BUCKET; self.passcode = DEFAULT_PASSCODE; 这样,如果没有初始化这两

一个例子理解threadLocal用法

ThreadLocal可以使对象达到线程隔离的目的.话不多说直接上代码: /** * 一个例子理解threadLocal * * 一个单例模式的类 */ public class SingleThreadLocalTest { private static SingleThreadLocalTest single = new SingleThreadLocalTest(); private ThreadLocal<String> threadLocal = new ThreadLocal<

subsys_initcall宏定义的一个例子,acpi/bus.c里面。

static int __init acpi_init(void) { int result; if (acpi_disabled) { printk(KERN_INFO PREFIX "Interpreter disabled.\n"); return -ENODEV; } acpi_kobj = kobject_create_and_add("acpi", firmware_kobj); if (!acpi_kobj) { printk(KERN_WARNING

js的prototype扩展的一个例子,模仿C#的StringBuilder功能,数组组合字符串,效率大于+拼凑

function StringBuilder() { this._strings_ = new Array;}StringBuilder.prototype.append = function (str) { this._strings_.push(str);};StringBuilder.prototype.toString = function () { return this._strings_.join("");}; js的prototype扩展的一个例子,模仿C#的Strin

javascript闭包的一个例子

<html> <head> <title>elementFromPoint</title> <script type="text/javascript"> window.onload = function(){ for(var i=0; i<6; i++){ var alink = document.createElement('a'); var titleText = document.createTextNode('

线程间共享数据的一个例子

[申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出. 联系邮箱:[email protected]] 题目:输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 题目分析: 一.如果数组中全部为负数,则返回最大负数值即可 二.当既有正数也有负数的时候: (1)从左往右叠加,如果当前叠加值小于或者等于0,则放弃,叠加总和清0(加一个负数或者0是毫无意义的),从此位置继续重新叠加 (

用一个例子读懂 RequireJS

用一个例子读懂 RequireJS 例子来自官方,我稍微改造了一下,如下: // project.html <!DOCTYPE html> <html>     <head>         <title>requirejs</title>         <!-- data-main attribute tells require.js to load              scripts/main.js after require.