运算速度

python数据分组运算

最后都变了- 提交于 2019-12-17 15:35:57
摘要: pandas 的 GroupBy 功能可以方便地对数据进行分组、应用函数、转换和聚合等操作。 # 原作者: lionets GroupBy 分组运算 有时也被称为 “split-apply-combine” 操作。其中的 “split” 便是借由 obj.groupby() 方法来实现的。 .groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False) 方法作用于一条轴向上,并接受一个 分组键 (by)参数来给调用者分组。分组键可以是Series 或列表,要求其长度与待分组的轴一致;也可以是映射函数、字典甚至数组的某条 列名(字符串) ,但这些参数类型都只是快捷方式,其最终仍要用于生成一组用于拆分对象的值。 lang:python >>> df = DataFrame({'key1':['a','a','b','b','a'], 'key2':['one','two','one','two','one'], 'data1':np.random.randn(5), 'data2':np.random.randn(5)}) >>> df data1 data2 key1 key2 0 0.922269 0.110285 a one 1 -0

计算机组成原理复习要点

陌路散爱 提交于 2019-12-16 06:48:39
1. 冯•诺依曼计算机的特点主要有: (1) 计算机由运算器,控制器、存储器和输入/输出设备五大部件构成 ,缺少任何一个部件都无法正常工作 (2) 指令和数据都以同等地位存放在存储器中 ,并可按地址访问。 (3)指令和数据都均以 二进制形式表示 (4) 指令在存储器中按顺序存放 。通常,指令是顺序执行的。在特殊情况下,可根据运算结果或指定的条件改变运算顺序。 (5) 指令由操作码和地址码组成 。操作码表示操作的性质,地址码表示操作数在存储器中的位置 (6) 机器以运算器为中心。 2.计算机系统的层次结构 计算机系统层次结构,指的是计算机系统由 硬件和软件 两大部分所构成,而如果 按功能再细分 ,可分为 7层 。 3.计算机各种性能指标之间的关系 总线的技术指标: 1. 总线的带宽 ( 总线数据传输率 ):总线带宽是指单位时间内总线上传输的数据量 2. 总线位宽:总线能同时传输的二进制位数 ,或数据总线的位数。 3.总线的工作频率:总线工作频率单位以MHz为单位,工作频率越高总线工作速率越快,总线带宽越宽。 4.各种性能指标之间的关系p19 计算机性能的定义: 吞吐率和响应时间 是考量一个计算机系统性能的基本指标。 吞吐率表示在单位时间内所完成的工作量 。在有些场合,吞吐率也可以称为带宽。 响应时间也被称为执行时间或等待时间 ,是指从作业在CPU上执行所用的时间外,还包括磁盘访问时间

CPU

不问归期 提交于 2019-12-12 10:36:07
CPU 1. CPU是什么? 2.CPU 实际做什么? 3.CPU 的内部结构 4.CPU 是寄存器的集合体 5.计算机语言 6.汇编语言 7.程序计数器 8.条件分支和循环机制 9.标志寄存器 10.函数调用机制 11.通过地址和索引实现数组 12.CPU 指令执行过程 13.总结 1. CPU是什么? CPU 的全称是 Central Processing Unit ,它是你的电脑中最硬核的组件,这种说法一点不为过。CPU 是能够让你的计算机叫计算机的核心组件,但是它却不能代表你的电脑,CPU 与计算机的关系就相当于大脑和人的关系。 它 是一种小型的计算机芯片 ,它嵌入在台式机、笔记本电脑或者平板电脑的主板上。通过在单个计算机芯片上放置数十亿个微型晶体管来构建 CPU。 这些晶体管使它能够执行运行存储在系统内存中的程序所需的计算,也就是说 CPU 决定了你电脑的计算能力。 2.CPU 实际做什么? CPU 的核心是从程序或应用程序获取指令并执行计算。 此过程可以分为三个关键阶段: 提取,解码和执行 。 CPU从系统的 RAM 中提取指令,然后解码该指令的实际内容,然后再由 CPU 的相关部分执行该指令。 RAM : 随机存取存储器 (英语:Random Access Memory,缩写:RAM),也叫主存,是与 CPU 直接交换数据的内部存储器。它可以 随时读写 (刷新时除外)

python数学库

烈酒焚心 提交于 2019-12-11 14:40:37
python数学库 本文是学习机器学习过程中的一些笔记,难免有些错误,请批评指正 numpy 标准Python的列表(list)中,元素本质是对象,如:L = [1, 2, 3],需要3个指针和三个整数对象,对于数值运算比较浪费内存和CPU。因此,Numpy提供了np.array()来存储单一数据类型的多维数组。Numpy对于数组(矩阵)的运算速度比list要快。 使用array创建 # 通过array函数传递list对象 L = [1, 2, 3, 4, 5, 6] a = np.array(L) print "a = ", a print type(a) 也可以这样创建numpy多维数组 b = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) print b 数组的大小(行,列)可以通过shape属性来获得 print a.shape 也可以对数组大小进行强制修改,注:从(3,4)改为(4,3)并不是对数组进行转置,而只是改变每个轴的大小,数组元素在内存中的位置并没有改变。 a.shape = 4, 3 当某个轴为-1时,将根据数组元素的个数自动计算此轴的长度 b.shape = 2, -1 使用reshape方法,可以创建改变了尺寸的新数组,原数组的shape保持不变,数组b和c共享内存

程序员需要了解的硬核知识之控制硬件

孤街醉人 提交于 2019-12-10 21:45:40
应用和硬件的关系 我们作为程序员一般很少直接操控硬件,我们一般通过 C、Java 等高级语言编写的程序起到间接控制硬件的作用。所以大家很少直接接触到硬件的指令,硬件的控制是由 Windows 操作系统 全权负责的。 你一定猜到我要说什么了,没错,我会说但是,任何事情没有绝对性,环境的不同会造成结果的偏差。虽然程序员没法直接控制硬件,并且 Windows 屏蔽了控制硬件的细节,但是 Windows 却为你开放了 系统调用 功能来实现对硬件的控制。在 Windows 中,系统调用称为 API ,API 就是应用调用的函数,这些函数的实体被存放在 DLL 文件中。 下面我们来看一个通过系统调用来间接控制硬件的实例 假如要在窗口中显示字符串,就可以使用 Windows API 中的 TextOut 函数。TextOut 函数的语法(C 语言)如下 BOOL TextOut{ HDC hdc, // 设备描述表的句柄 int nXStart, // 显示字符串的 x 坐标 int nYStart, // 显示字符串的 y 坐标 LPCTSTR lpString, // 指向字符串的指针 int cbString // 字符串的文字数 } 那么,在处理 TextOut 函数的内容时,Windows 做了些什么呢?从结果来看,Windows 直接控制了作为硬件的显示器。但 Windows

凶悍的位运算

随声附和 提交于 2019-12-10 01:22:54
凶悍的位运算 补上篇文章的坑,今天就来介绍下位运算。 一,位运算的意义 虽然网上搜到不少大佬的介绍,但问题是,萌新不太懂啊,只能自己从自己学到的出发,以后遇到了继续添加。 1.较高的执行效率 2.较低的空间需求 3.特殊需求 有使用价值,我们才更多会去使用,去多学它。 二,什么是位运算? 位运算就是直接对整数在内存中的二进制位进行操作。 例如: 1 & 2 = 0b 0001 & 0b 0010 = 0b 0000 = 0 三,位运算简介 1.位运算符号 & :与运算 有0为零,同1出1。 | :或运算 全0为0,有1是1 ^ :异或运算 相同为0,不同为1 ~ :取反运算 和原情况相反 下面是一些基本情况的运算表。 右移 : >> 例如: 12 >> 2 = 0b 0000 1100 右移两位 结果为 0b 0000 0011 十进制为3 在不超过范围内,12 >>2 相当于12除以4(2的2次方) 左移 : << 例如: 12 << 2 = 0b 0000 1100 左移两位 结果为 0b 0011 0000 十进制为48 在不超过范围内,12<< 2 相当于12乘4(2的2次方) 注意:右移时,左侧补的是符号位。 例如 -32 >> 2 1000 0000 0000 0000 0000 0000 0010 0000原 1111 1111 1111 1111 1111 1111

什么是按位移位(位移)运算符以及它们如何工作?

痴心易碎 提交于 2019-12-09 14:29:58
我一直在尝试在业余时间学习C语言,其他语言(C#,Java等)具有相同的概念(通常是相同的运算符)...... 我想知道的是,在核心层面,位移( << , >> , >>> )做了什么,它有什么问题可以帮助解决,以及潜伏在弯道的东西? 换句话说,一个绝对的初学者指导比特移位的所有优点。 #1楼 假设我们有一个字节: 0110110 应用一个左移位器让我们: 1101100 最左边的零移出字节,并在字节的右端附加一个新的零。 这些位不会翻转; 他们被丢弃了。 这意味着如果您离开1101100然后右移它,您将无法获得相同的结果。 向左移动N相当于乘以2 N. 向右移动N(如果你使用 的是补码 )相当于除以2 N 并舍入为零。 如果您使用的是2的幂,则Bitshifting可以用于疯狂快速的乘法和除法。几乎所有低级图形例程都使用位移。 例如,回到过去,我们使用模式13h(320x200 256色)进行游戏。 在模式13h中,视频存储器按像素顺序布局。 这意味着计算像素的位置,您将使用以下数学: memoryOffset = (row * 320) + column 现在,回到那个时代,速度是至关重要的,所以我们将使用位移来进行此操作。 然而,320不是2的幂,所以为了解决这个问题,我们必须找出加在一起的两个幂是多少才能得到320: (row * 320) = (row * 256) +

NMath与NVIDIA合作提升运算速度

一个人想着一个人 提交于 2019-12-07 20:15:59
概述: 日前,数学和统计学计算库厂商NMath透露,将与硬件提供商NVIDIA(英伟达)合作,于6月份推出基于其GPU处理器加速版本的数学库。   日前,数学和统计学计算库 NMath 的厂商透露,将与硬件提供商 NVIDIA (英伟达)合作,于6月份推出基于其 GPU处理器 加速版本的数学库。   这个称为NMath Premium的数学库的许多线性代数和信号处理算法,运行在本地的NVIDIA GPU处理器上,将实现性能数倍的增益,许多依赖NMath统计库的进程也将大幅度的性能提升。而且使用Nmath和NMath Premium的方法几乎不会有任何改变,两个控件的编码使用方法几乎完全一致。   接下来我们来看看NMath公司公布的NMath Premium内部测试结果。 测试依据   采用一个相同的4个线性代数算法,分别运行于GPU K20, GPU K10, GPU Tesla 2090和Intel i7的CPU中。这四个算法分别是SVD,QR和特征值分解,求解。同时测试FFT(离散傅氏变换的快速算法)运行的性能。 测试结果   单精线性代数,GPU的运算速度远超CPU,而且当矩阵数量越大时,优势越明显。   双精度线性代数,结果更加显而易见,I7 CPU无法计算矩阵数量超大的双精度线性代数。   FFT运行上,在长度较短的FFT运算时,i7有部分优势,但稳定性叫差

NMath与NVIDIA合作提升运算速度

≡放荡痞女 提交于 2019-12-07 10:28:30
概述: 日前,数学和统计学计算库厂商NMath透露,将与硬件提供商NVIDIA(英伟达)合作,于6月份推出基于其GPU处理器加速版本的数学库。   日前,数学和统计学计算库 NMath 的厂商透露,将与硬件提供商 NVIDIA (英伟达)合作,于6月份推出基于其 GPU处理器 加速版本的数学库。   这个称为NMath Premium的数学库的许多线性代数和信号处理算法,运行在本地的NVIDIA GPU处理器上,将实现性能数倍的增益,许多依赖NMath统计库的进程也将大幅度的性能提升。而且使用Nmath和NMath Premium的方法几乎不会有任何改变,两个控件的编码使用方法几乎完全一致。   接下来我们来看看NMath公司公布的NMath Premium内部测试结果。 测试依据   采用一个相同的4个线性代数算法,分别运行于GPU K20, GPU K10, GPU Tesla 2090和Intel i7的CPU中。这四个算法分别是SVD,QR和特征值分解,求解。同时测试FFT(离散傅氏变换的快速算法)运行的性能。 测试结果   单精线性代数,GPU的运算速度远超CPU,而且当矩阵数量越大时,优势越明显。   双精度线性代数,结果更加显而易见,I7 CPU无法计算矩阵数量超大的双精度线性代数。   FFT运行上,在长度较短的FFT运算时,i7有部分优势,但稳定性叫差

再谈数据类型

ⅰ亾dé卋堺 提交于 2019-12-06 13:49:00
  学过计算机编程的人都知道,计算机无论多么牛叉,其实都是在“天下武功,唯快不破”的基础上成立的。计算机可以处理文本,剪辑视频,修复音频,美化照片,显示网页,科学计算,这一切的一切都是建立数据的基础之上,每种编程语言的本质,就是通过编程,撰写计算机的命令集合,充分利用计算机可以不休息、速度快的特征让计算机帮着处理数据,提高处理的效率。无论哪一种编程语言,都需要预制一些数据类型,并且这些类型能够覆盖人类描述信息的需要。C语言中对数值的处理花的信息很多,符合类型的结构体、联合体和枚举类型,后来都被指针取代了,说C语言简单的,主要是入门比较简单,关键字少,但是C语言的主要难点在指针。C++在C的基础上扩展了面向对象,增加了很多普通用户难以理解和应用的语法,还好有Java语言将C++大大简化了一番,Java的流行应该说C++的功劳绝对不少了。现在主流的是python,由于在机器学习和AI中Python可以大显身手,所以Python很火。Python把主要的问题给隐藏了不少,但是python的缺点是无法区分真正的水平吧。哈哈。   Python中的数据类型,就是语言规定了一些数据的规范和能够接受的操作方法。数值型(标量),能够参与算术运算的整型、浮点型、复数型、布尔型和空值;复合类型,列表、元组、字典、集合;字符串;文件对象;自定义类型等。 一、数值型:   1、整型: 1 Python 3