Numpy 是Numerical Python的简写,用来进行高性能的科学计算以及数据分析的基础包。它是一些高级工具(pandas)的基础。它主要提供以下几个功能:

  (1). ndarray:计算快,空间效率高的多纬的数组

  (2). 快速操作数组的标准数学函数

  (3). 向磁盘读写数据的工具,提供内存影射文件功能

  (3). 线性代数,随机数生成器,傅立叶变换功能

  (4). 整合用C,C++,以及Fortran写的代码的工具 (Python生态系统宗重要的功能)

   事实上Numpy本身没有提供太多数据分析的函数,但是理解NumPy的数组,以及面向数组的计算对后期学习pandas等工具有很大的帮助。

1. ndarray , 多维数组对象

  多维数组对象是NumPy的一个重要特点,它为庞大的数据集提供一个运算快且灵活的容器。

  (1). 简单创建一个数组,通过调用pandas.array(),前提是需要引入numpy包,这里我门为了方便调用,将其重命名为np

In [6]: import numpy as np

In [7]: a = [6,7.5,8,0,1]
# 用创建的list对象来创建array对象
In [8]: arr1 = np.array(a) In [9]: arr1
Out[9]: array([ 6. , 7.5, 8. , 0. , 1. ])

  (2). 用嵌套序列来创建数组

n [12]: data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]

In [13]: arr2 = np.array(data2)

In [14]: arr2
Out[14]:
array([[1, 2, 3, 4],
[5, 6, 7, 8]])

  (3). 除了用np.array 来创建数组外,还有一些其他的函数来创建新的数组。

    zeros 和 ones 函数可以分别用来创建0,和1 元素的数组。

In [15]: np.zeros(10)
Out[15]: array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
In [16]: np.ones((3,5))
Out[16]:
array([[ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.]])

    通过np.empty 创建一个由任意数初始化的数组

In [21]: np.empty((2,3,2))
Out[21]:
array([[[ 6.91210571e-310, 1.97791711e-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]]])

    通过arrange函数创建:

    

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

  (4). 查看数组属性

# 查看数组维度
In [24]: arr2.ndim
Out[24]: 2
# 查看数组大尺寸
In [25]: arr2.shape
Out[25]: (2, 4)
# 查看数组元素类型
In [26]: arr2.dtype
Out[26]: dtype('int64')
。。。。。

2. ndarrays 的数据类型:

   在创建数组的时候可以指定数据元素的类型,用dtype指定类型,说明在解析数组所在内存空间的时候采用什么方式。这使得NumPy 更加强大和易用。

 在大多数情况下,NumPy是直接类型映射成底层的二进制,这使得其更容易以二进制流的方式去读写数据。

    

In [3]: arr1 = np.array([1,2,3,4],dtype = np.float64)

In [4]: arr2 = np.array([4,3,2,1],dtype = np.int32)

In [5]: arr1.dtype
Out[5]: dtype('float64') In [6]: arr2.dtype
Out[6]: dtype('int32')

  数据类型表:

  

  

  可以显示的将一种类型强转为另一种类型,这时需要使用astye函数

In [7]: arr2.dtype
Out[7]: dtype('int32')
In [8]: float_arr2 = arr2.astype(np.float64)
In [9]: float_arr2
Out[9]: array([ 4., 3., 2., 1.])
In [10]: float_arr2.dtype
Out[10]: dtype('float64')

  但是当把浮点类型转化为整形的时候会出现截断:

  

In [11]: arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])

In [12]: arr.astype(np.int32)
Out[12]: array([ 3, -1, -2, 0, 12, 10], dtype=int32)

  也可以把字符串表示的数字转换为数值类型,但是可能在转换过程中出错,因为有的字符串无法转换为数值类型。

In [13]: numeric_strings = np.array(['1.25', '-9.6', ''], dtype=np.string_)

In [14]: numeric_strings.astype(float)
Out[14]: array([ 1.25, -9.6 , 42. ])

3. 运算

  可以在NumPy的数组之间,以及数组和数字之间作运算。

In [15]: arr = np.array([[1., 2., 3.], [4., 5., 6.]])

In [16]: arr
Out[16]:
array([[ 1., 2., 3.],
[ 4., 5., 6.]])
# 数组间乘法
In [17]: arr * arr
Out[17]:
array([[ 1., 4., 9.],
[ 16., 25., 36.]])
# 数组间减法
In [18]: arr - arr
Out[18]:
array([[ 0., 0., 0.],
[ 0., 0., 0.]])
# 数和数组的除法
In [19]: 1 / arr
Out[19]:
array([[ 1. , 0.5 , 0.33333333],
[ 0.25 , 0.2 , 0.16666667]])
# 数和数组的乘法
In [20]: arr * 0.5
Out[20]:
array([[ 0.5, 1. , 1.5],
[ 2. , 2.5, 3. ]])

  不同尺寸大小的数组间也是可以运算的。

  

NumPy 学习(1): ndarrays的更多相关文章

  1. (转)Python数据分析之numpy学习

    原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...

  2. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  3. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  4. NumPy学习笔记 一

    NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  5. 数据分析之Pandas和Numpy学习笔记(持续更新)<1>

    pandas and numpy notebook        最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...

  6. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...

  7. NumPy学习(让数据处理变简单)

    NumPy学习(一) NumPy数组创建 NumPy数组属性 NumPy数学算术与算数运算 NumPy数组创建 NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同 ...

  8. numpy 学习笔记

    numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...

  9. numpy 学习总结

    numpy 学习总结 作者:csj更新时间:01.09 email:59888745@qq.com 说明:因内容较多,会不断更新 xxx学习总结: 回主目录:2017 年学习记录和总结 #生成数组/使 ...

  10. Numpy学习1

    NumPy学习(1) 参考资料: http://www.cnblogs.com/zhanghaohong/p/4854858.html http://linusp.github.io/2016/02/ ...

随机推荐

  1. Please see the 'svn upgrade' command

    svn: E155036: Please see the 'svn upgrade' command svn: E155036: Working copy '/home/easwy/dev' is t ...

  2. 一个servlet处理来自多个不同页面的请求!

    例如有一个用户表,我们要处理 添加,删除 用户以及登录功能 对应的有add.jsp del.jsp login.jsp等 <body> <!-- login.jsp --> & ...

  3. IOS-委托代理(degegate)

    委托代理: 委托代理(degegate)顾名思义,把某个对象要做的事情委托给别的对象去做.那么别的对象就是这个对象的代理,代替它来打理要做的事.反映到程序中, 首先要明确一个对象的委托方是哪个对象,委 ...

  4. 关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法

    转自:http://blog.csdn.net/xiaochunzao/article/details/16987703 Visual Studio 2013 编译旧的 multi-byte char ...

  5. 三、jQuery--jQuery基础--jQuery基础课程--第8章 jQuery 实现Ajax应用

    1.使用load()方法异步请求数据 使用load()方法通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,它的调用格式为:load(url,[data],[callback]) ...

  6. PAL/NTSC 制电视广播技术有关知识--FPGA

    1.PAL和NTSC的区别 常见的电视信号制式是PAL和NTSC,另外还有SECAM等. NTSC即正交平衡调幅制,PAL为逐行倒像正交平衡调幅制. (1)PAL电视标准  PAL电视标准,每秒25帧 ...

  7. iOS开发--UIDatePicker

    UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...

  8. 二叉搜索树的实现及指针问题的一点思考(C++)

    今天实现二叉搜索树的时候因为指针的问题卡了一上午(实在不应该...),一直segmentation fault,个人感觉还是需要记录一下的. 首先贴一下做的题的意思: 输入一系列整数,建立二叉排序数, ...

  9. STL Map的使用

    Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力.下面就通过示例记录一下map的使用: 一.向map中 ...

  10. Intellij Idea 使用

    一.使用前需要修改的配置: 1.当类实现Serializable接口时,自动生成 serialVersionUID 1)Setting->Inspections->java->Ser ...