zoukankan      html  css  js  c++  java
  • NumPy 学习(1): ndarrays

      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', '42'], 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. ]])

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

      

  • 相关阅读:
    net core 使用 rabbitmq
    asp.net core WebApi 返回 HttpResponseMessage
    asp.net core 2.1 WebApi 快速入门
    JQuery EasyUI combobox动态添加option
    php截取字符去掉最后一个字符
    JQuery EasyUI Combobox的onChange事件
    对于不返回任何键列信息的 selectcommand 不支持 updatecommand 的动态 sql 生成
    Access2007 操作或事件已被禁用模式阻止解决办法
    Easyui 中 Tabsr的常用方法
    Win 7 IE11不能下载文件,右键另存为也不行
  • 原文地址:https://www.cnblogs.com/linux-wangkun/p/5894290.html
Copyright © 2011-2022 走看看