NumPy(Numerical Python的简称) 是高性能科学计算和数据分析的基础包,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数,其部分基本功能如下:

ndarry,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数值

用于对整组数据进行快速运算的标准数学函数(无需编写循环)

用于读写磁盘数据的工具以及用于操作内存映射文件的工具

线性代数、随机生成以及傅立叶变化功能

用于集成C、C++、Fortran等语言编写的代码工具

  

In [9]: import numpy as np

In [10]: print np.version.version
1.8.2

  

In [16]: data1 = [2, 3, 5, 7, 1024]

In [17]: arr1 = np.array(data1)

In [18]: arr1
Out[18]: array([ 2, 3, 5, 7, 1024]) In [19]: data2 = ([1,2,3,4],[5,6,7,8]) In [20]: arr2 = np.array(data2) In [21]: arr2
Out[21]:
array([[1, 2, 3, 4],
[5, 6, 7, 8]]) In [22]: arr2.ndim
Out[22]: 2 In [23]: arr2.shape
Out[23]: (2, 4)

  除非显式说明,否则np.array都会尝试为新建的这个数组推断出一个较为适合的数据类型,数据类型保存在一个特殊的dtype对象中,

In [25]: arr1.dtype
Out[25]: dtype('int64') In [26]: arr2.dtype
Out[26]: dtype('int64')

  可以通过nadarry的astype方法显式地转化其他dtype

In [45]: evilxr = np.array([6,7,2,3,8,6])

In [46]: evilxr.dtype
Out[46]: dtype('int64') In [47]: folat_evilxr = evilxr.astype(np.float) In [48]: folat_evilxr.dtype
Out[48]: dtype('float64')

  如果将整数转换为浮点数,则小数部分将会被截断(而不是四舍五入)

In [57]: evilxr = np.array([6.1, 7.5, 2.9, 3.2, 8.9, 6.123])

In [58]: evilxr.dtype
Out[58]: dtype('float64') In [59]: int_evilxr = evilxr.astype(np.int32) In [60]: int_evilxr
Out[60]: array([6, 7, 2, 3, 8, 6], dtype=int32)

  

  

zeros和ones也可以分别创建指定长度或者形状的全0或全1数组,empty可以创建一个没有任何具体值的数组。

In [30]: np.zeros(2)
Out[30]: array([ 0., 0.]) In [31]: np.zeros((2,3))
Out[31]:
array([[ 0., 0., 0.],
[ 0., 0., 0.]]) In [32]: np.empty((2,3,2))
Out[32]:
array([[[ 2.15749693e-316, 0.00000000e+000],
[ 0.00000000e+000, 0.00000000e+000],
[ 0.00000000e+000, 0.00000000e+000]], [[ 0.00000000e+000, 0.00000000e+000],
[ 0.00000000e+000, 0.00000000e+000],
[ 0.00000000e+000, 0.00000000e+000]]])

  arange是Python内置函数range的数组版

In [36]: np.arange(8)
Out[36]: array([0, 1, 2, 3, 4, 5, 6, 7])

  数组和标量之间的运算

In [2]: data1 = [8, 9, 5, 9]

In [3]: arr1 = np.array(data1)

In [7]: import numpy as np

In [8]: arr1 = np.array(data1)

In [9]: arr1
Out[9]: array([8, 9, 5, 9]) In [10]: arr1 * arr1
Out[10]: array([64, 81, 25, 81]) In [11]: arr1 - arr1
Out[11]: array([0, 0, 0, 0]) In [12]: arr1 +1
Out[12]: array([ 9, 10, 6, 10])

  不同数组之间的运算,也叫广播

Python 学习之 NumPy的更多相关文章

  1. python学习之Numpy.genfromtxt

    Python 并没有提供数组功能,虽然列表 (list) 可以完成基本的数组功能,但它并不是真正的数组,而且在数据量较大时,使用列表的速度就会慢的让人难受.Numpy 提供了真正的数组功能,以及对数据 ...

  2. python学习之numpy实战

    import numpy as np def main(): lst=[[1,3,5],[2,4,6]] print('hello world') print(type(lst)) np_lst = ...

  3. python学习之numpy.ewaxis

    当多维数组的某一列时返回的是一个行向量 >>> X = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) >> ...

  4. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

    始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...

  5. python及pandas,numpy等知识点技巧点学习笔记

    python和java,.net,php web平台交互最好使用web通信方式,不要使用Jypython,IronPython,这样的好处是能够保持程序模块化,解耦性好 python允许使用'''.. ...

  6. Python学习day18-常用模块之NumPy

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  7. 常用统计分析python包开源学习代码 numpy pandas matplotlib

    常用统计分析python包开源学习代码 numpy pandas matplotlib 待办 https://github.com/zmzhouXJTU/Python-Data-Analysis

  8. python:<class 'numpy.ndarray'>的学习

    在学习opencv-python的时候,给出图片地址再调用cv2.imread("地址"),发现出创建的是numpy类型的ndarray对象,用来存放多维数组的对象 # 导入cv2 ...

  9. 【python学习小知识】求绝对值和numpy和tensor的相互转换

    一.python求绝对值的三种方法 1.条件判断 2.内置函数abs() 3.内置模块 math.fabs 1.条件判段,判断大于0还是小于0,小于0则输出相反数即可 # 法1:使用条件判断求绝对值 ...

随机推荐

  1. Servlet 实现上传文件以及同时,写入xml格式文件和上传

    package com.isoftstone.eply.servlet; import java.io.BufferedReader; import java.io.BufferedWriter; i ...

  2. Oracle PL/SQL实战代码下载

    最近在学习PL/SQL编程,算是一个进阶吧,书没带光盘,所以按照书中的地址去下载样例,无法下载,到图灵官网找到了源代码下载地址,无法下载的留邮箱,我发给大家 下载地址: http://www.itur ...

  3. JavaScript中的String

    1.基本类型String var str ="helloworld"; 要记住:保存的是Unicode字符,一旦创建便不可变   2.引用类型String var strObj = ...

  4. 用Python编写的第一个回测程序

    用Python编写的第一个回测程序 2016-08-06 def savfig(figureObj, fn_prefix1='backtest8', fn_prefix2='_1_'): import ...

  5. Windows下配置OpenGL环境

    这里编译工具为VS2012. 首先OpenGL的官网如下链接(英文) http://www.opengl.org http://www.opengl.org/resources/libraries/g ...

  6. Java—类的封装、继承与多态

    一.类和对象 1.类 类是数据以及对数据的一组操作的封装体. 类声明的格式: 类声明 { 成员变量的声明: 成员方法的声明及实现: } 1.1 声明类 [修饰符] class 类<泛型> ...

  7. 【必备】史上最全的浏览器 CSS & JS Hack 手册(转)

    浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异.因此,浏览器兼容成为前端开发人员的必备技能.如果有一份浏览器 Hack 手册,那查询起来就方便多了.这篇文章就向 ...

  8. eclipse 合并分支

    1.在要合并的分支项目中右击项目->team->merge 2.选择branch,将branch合并到brach2 3.出现冲突,查看http://www.cnblogs.com/jinT ...

  9. 关于CSS3线型渐变这些事儿

    CSS3兼容各浏览器的线型渐变方法: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  10. [转]为什么不能用memcached存储Session

    以下内容转自:http://www.infoq.com/cn/news/2015/01/memcached-store-session -------------------------分割线---- ...