• NumPy基础:数组和矢量计算


    今天被老板fire了,还是继续抄书吧,安抚我受伤的小心脏。知识还是得慢慢积累,一步一个脚印,这样或许才是最快的捷径。

                                                                                                                                                                ------2015-2-16------------------------------------------------------------------

    • NumPy的ndarray:一种多维数组对象

    NumPy一个重要的特点就是N维数组对象(ndarray),该对象是一个快速灵活的大数据集容器。ndarray是一个通用的同构数据多维容器,也就是所有的元素都必须是相同的类型。每个数组都有shape(表示各维度大小的元组)和dtype(表示数组数据类型的对象)。

    In[2]: import numpy as np
    In[3]: data=[[1,2,3],[4,5,6]]
    In[4]: arr=np.array(data)
    In[6]: arr
    Out[6]: 
    array([[1, 2, 3],
           [4, 5, 6]])
    In[7]: arr.shape
    Out[7]: (2L, 3L)
    In[8]: arr.dtype
    Out[8]: dtype('int32')

    创建ndarray

    数组创建函数
    函数 说明
    array 将输入数据(列表、元组、数组或其它序列类型)转换为ndarray。要么推断出dtype,要么显示指定dtype。默认直接复制输入数据
    asarray 将输入转换为ndarray,如果输入本身就是一个ndarray就不进行复制
    arange 返回一个ndarray而不是一个列表
    ones、ones_like 根据指定的形状和dtype创建一个全1数组。ones_like以另一个数组为参数,并根据其形状和dtype创建一个全1数组
    zeros、zeros_like 类似于ones和ones_likes只不过产生全0数组
    empty、empty_like 创建新数组,只分配内存空间但不填充任何值
    eye、identity 创建一个N×N单位矩阵

    ndarray数据类型

    int8,int16,int32,int64有符号整型

    uint8,uint16,uint32,uint64无符号整型

    float16,float32,float64,float128单精度,多精度,扩展精度

    complex64,complex128,complex256分别用32,64,128表示的复数

    bool

    object  python数据对象

    string_  固定长度的字符串数据类型

    unicode_ 固定长度的unicode类型

    In[23]: arr.astype(np.float64)
    Out[23]: array([ 1.,  2.,  3.,  4.,  5.])
    In[27]: h1=arr.astype(np.int16)
    In[30]: h1.dtype
    Out[30]: dtype('int16')

    数组和标量之间的运算

    In[2]: import numpy as np
    In[3]: arr=np.array([[1,2,3],[4,5,6]])
    In[4]: arr*arr
    Out[4]: 
    array([[ 1,  4,  9],
           [16, 25, 36]])
    In[5]: arr+arr
    Out[5]: 
    array([[ 2,  4,  6],
           [ 8, 10, 12]])
    In[6]: arr*4
    Out[6]: 
    array([[ 4,  8, 12],
           [16, 20, 24]])
    In[7]: arr**0.5
    Out[7]: 
    array([[ 1.        ,  1.41421356,  1.73205081],
           [ 2.        ,  2.23606798,  2.44948974]])

    基本的索引和切片

    In[8]: np.arange(10)
    Out[8]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    In[9]: arr=np.arange(10)
    In[10]: arr[5:8]
    Out[10]: array([5, 6, 7])
    In[11]: arr_slice=arr[5:8]
    In[12]: arr_slice[1]
    Out[12]: 6
    In[13]: arr_slice[1]=123456
    In[14]: arr
    Out[14]: 
    array([     0,      1,      2,      3,      4,      5, 123456,      7,
                8,      9])

    警告:ndarray切片的一份副本而非视图,就需要显示arr[5:8].copy()

    数组的转置与轴对换

    In[16]: arr=np.arange(15).reshape((3,5))
    In[17]: arr
    Out[17]: 
    array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14]])
    In[18]: arr.T
    Out[18]: 
    array([[ 0,  5, 10],
           [ 1,  6, 11],
           [ 2,  7, 12],
           [ 3,  8, 13],
           [ 4,  9, 14]])
    In[19]: np.dot(arr,arr.T)
    Out[19]: 
    array([[ 30,  80, 130],
           [ 80, 255, 430],
    • 通用函数:快速的元素级数组函数
    • 利用数组进行数据处理
    • 用于数组的文件输入输出
    • 线性代数
    • 随机数生成
    In[20]: samples=np.random.normal(size=(4,4))
    In[21]: samples
    Out[21]: 
    array([[ 1.2160082 ,  0.34629744, -0.70813727,  2.59673398],
           [-1.32110632,  1.19660352,  0.08227731,  0.24075048],
           [-0.29301216,  0.42639032, -1.76321448, -1.05558718],
           [ 0.0872803 ,  0.25871173,  0.63373105,  0.59362002]])

    numpy.random模块比python内置的random模块速度更加快。

    部分numpy.random函数

  • 相关阅读:
    windows服务启动有界面的程序
    [转发]读取txt防止读到乱码--自动根据文件编码进行读取
    线程UI同步
    SQL2012导出的脚本没有if exists判断
    power designer 设计数据库生成到oracle数据库
    经典三层,单元工作模式出错的解决方案
    EF ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
    Oracle 11g 客户端连接 oracle 10g 服务端,乱码问题
    EF 连接oracle 基础连接失败 问题解决
    vs2010 oraclelient 引用问题
  • 原文地址:https://www.cnblogs.com/hee0624/p/5220134.html
Copyright © 2020-2023  润新知