• NumPy 学习(3): 通用函数


    1.  元素级别的函数

      元素级别的函数也就是函数对数组中的每一个元素进行运算。例如:

    In [10]: arr = np.arange(10)
    
    In [11]: np.sqrt(arr)
    Out[11]: 
    array([ 0.        ,  1.        ,  1.41421356,  1.73205081,  2.        ,
            2.23606798,  2.44948974,  2.64575131,  2.82842712,  3.        ])
    
    In [12]: np.exp(arr)
    Out[12]: 
    array([  1.00000000e+00,   2.71828183e+00,   7.38905610e+00,
             2.00855369e+01,   5.45981500e+01,   1.48413159e+02,
             4.03428793e+02,   1.09663316e+03,   2.98095799e+03,
             8.10308393e+03])

      一元函数(接受一个数组参数)

      

      二元函数:

      

         

    2. 数组级别的函数

      数组级别的函数一般是一些统计函数,像聚合类的函数求和(sum),求平均(mean)等。

    In [16]: arr = np.arange(32).reshape(8,4)
    
    In [17]: arr.mean()
    Out[17]: 15.5
    
    In [18]: arr.sum()
    Out[18]: 496
    # 求每一行的平均数
    In [19]: arr.mean(axis = 1)
    Out[19]: array([  1.5,   5.5,   9.5,  13.5,  17.5,  21.5,  25.5,  29.5])
    # 求每一列的和
    In [20]: arr.sum(0)
    Out[20]: array([112, 120, 128, 136])

      

    3.  布尔数组的函数

      在用上述的函数计算的时候,True为1,False为0,所以:

    In [5]: arr
    Out[5]: 
    array([ 0.85760541, -0.41721765, -1.42905838, -0.33368523,  0.4434428 ,
           -1.14905993, -1.97609581, -2.00071844,  0.08234022,  0.3282299 ])
    
    In [6]: (arr > 0).sum()
    Out[6]: 4
    
    In [7]: type((arr > 0))
    Out[7]: numpy.ndarray
    
    In [8]: arr > 0
    Out[8]: array([ True, False, False, False,  True, False, False, False,  True,  True], dtype=bool)

      any() 函数: 只有有一个为True,返回结果为True

      all() 函数:   所有值都为True的时候,结果才为True

      

    In [9]: arr_temp = (arr > 0)
    
    In [10]: arr_temp
    Out[10]: array([ True, False, False, False,  True, False, False, False,  True,  True], dtype=bool)
    
    In [11]: arr_temp.any()
    Out[11]: True
    
    In [12]: arr_temp.all()
    Out[12]: False

    4. 集合函数

      

      

    In [17]: arr = np.array([3, 3, 3, 2, 2, 1, 1, 4, 4])
    
    In [18]: np.unique(arr)
    Out[18]: array([1, 2, 3, 4])

    5.  数据读写函数

      Numpy可以将数据保存以及读取文本文件以及二进制文件。

      5.1 以二进制方式保存数据

        numpy.save 以及 numpy.load 函数可以分别在磁盘上保存和加载数据。 数组默认是以未压缩的原始二进制格式保存在以.npy为后缀名的文件中。

    In [25]: arr = np.arange(10)
    # 保存arr中的数据
    In [26]: np.save("arrays",arr)
    # 查看数据
    In [27]: !ls -l arrays.npy
    -rw-rw-r--. 1 amei amei 160 9月  23 19:03 arrays.npy
    # 加载文件中的数据
    In [29]: np.load("arrays.npy")
    Out[29]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

        也可以用 numpy.savez 将多个数组保存到一个压缩的归档文件中,在读取时候可以进行延迟加载

    In [31]: np.savez("archive.npz",a = arr, b = arr )
    
    In [32]: !ls -l archive.npz
    -rw-rw-r--. 1 amei amei 514 9月  23 19:11 archive.npz
    
    In [33]: arch = np.load("archive.npz")
    # 根据需要读取数组内容
    In [34]: arch["b"]
    Out[34]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

      5.2 文本文件的读写

        暂无。。。

     6. 线性代数函数

      import numpy.linalg 之后就可以调用以下函数

    7. 随机数函数

      numpy.random 比 python内嵌的random 提供更多的函数,而且效率更高, 更适合产生数组级别的样本。

      下面就是分别测试python自带的和numpy的正太分布产生随机数所用的时间:

      

    # 产生1000000个随机数
    In [9]: N = 1000000 In [12]: from random import normalvariate # numpy.random 中的随机数函数 In [13]: %timeit np.random.normal(size = N) 10 loops, best of 3: 49.7 ms per loop # python 自带的随机数函数    In [14]: %timeit samples = [ normalvariate(0,1) for _ in xrange(N)] 1 loop, best of 3: 1.23 s per loop

      numpy.random 中的函数

      

      

    # numpy.random 中的随机数函数
  • 相关阅读:
    IIS的FTP出错: 451 No mapping for the unicode character exists in the target multibyte code page
    silverlight中AES加密RijndaelManaged的使用
    ManualResetEvent详解
    Silverlight如何与JS相互调用
    SQL Server 2008备份策略设计
    mysql 服务无法启动
    Silverlight Resource
    TCP 烟囱卸载
    .net程序 混淆、强签名、加密
    开源客户关系管理系统SplendidCRM下的二次开发
  • 原文地址:https://www.cnblogs.com/linux-wangkun/p/5897905.html
Copyright © 2020-2023  润新知