美文网首页
Numpy常用接口

Numpy常用接口

作者: 林逸凡_lyf | 来源:发表于2018-09-25 21:37 被阅读0次

    ndarray

    data1 = [6, 7.5, 8, 0, 1]
    arr1 = np.array(data1) # 将list转化为ndarray
    np.zeros(10) # 创建0向量
    np.ones((3, 6)) # 创建1向量,传入参数是表示形状的元组
    np.ones_like(data1) # 根据data1的形状创建1向量, zeros_loke同理
    np.arrange(15) # range的numpy版本
    np.eye(10) # 创建一个nxn单位阵,identity同理
    arr1.astype(np.int64) # 将arr1转换为int64类型的数组
    arr2 = np.ones((10, 10, 10))
    arr2[:, :, 3] # 取第三维为3的元素
    arr2.ravel() # 降成1维数组
    

    切片

    # numpy的切片是原数组的视图,不会复制
    arr_silce = arr1[1:2] # 是引用
    arr_copy = arr1[1:2].copy() # 调用copy()进行复制
    arr3d = np.ones((5,5,5)) # 三维向量
    arr3d[0][2] # 等价于arr2d[0, 2]
    arr3d[0] = 42 # 将42赋值给所有对应的位置
    arr3d[:, 1:]
    arr3d[1, :2] # 多维切片,用逗号隔开
    
    2dslice.png

    转置

    arr.T
    arr.transpose()
    # 转置返回的是视图,不是复制
    arr = np.arange(16).reshape((2,2,4))
    arr.transpose((1, 0, 2)) # 高维转置需传入轴编号
    arr.swapaxes(1,2) # 转置对应轴
    

    通用函数

    ufunc,对ndarray执行元素级运算的函数

    arr = np.arange(10)
    np.sqrt(arr)
    np.exp(arr)
    #np.where, if else
    xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
    yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
    cond = np.array([True, False, True, True, False])
    result = np.where(cond, xarr, yarr) # 根据cond条件选择xarr或yarr
    

    数学统计方法

    arr = np.random.randn(5, 4) # 正态分布的数据
    arr.mean(axis=1) # 等价于np.mean(axis=1), 求均值
    arr.sum() # 求和,布尔型会转换为0/1,可以用来计算True的个数
    bools = np.array([True, False, False, True])
    bools.any() # 是否有一个True
    bools.all() # 是否都是True
    arr.sort(1) # 就地排序,改变数据本身,传入参数为轴
    np.sort(arr) # 创建副本
    names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
    np.unique(names) # 唯一化, ['Bob', 'Joe', 'Will']
    np.in1d(names, ['Bob', 'Joe']) # 判断names的成员在不在第二个数组中,[True, True, False, True, False, True, True]
    
    funclist1.png funclist2.png
    funclist3.png

    文件存储

    数据默认以二进制方式存储

    arr = np.arange(10)
    np.save('some_array', arr) # 会自动加后缀npy
    np.load('some_array.npy')
    np. savez(' array_archive. npz', a= arr, b= arr) # 将多个数组保存到一个文件中
    arch = np.load('array_archive.npz')
    arch['b'] # 使用key来获取对应数组
    

    线性代数

    funclist4.png
    samples = np.random.normal(size=(4, 4)) # 生成标准4x4正态分布
    
    funclist5.png
    funclist6.png

    相关文章

      网友评论

          本文标题:Numpy常用接口

          本文链接:https://www.haomeiwen.com/subject/akefgftx.html