python学习之numpy使用

发布时间:2019-09-10 09:13:37编辑:auto阅读(2007)

    #NumPy数据库学习
    #Numpy包含一下特点:
    '''
    1.强大的N维数组对象。
    2.成熟的函数库。
    3.用于集成c/c++和Fortran代码工具
    4.实用的线性代数,傅里叶变换和随机生成函数。
    '''
    import numpy as np
    #4.1:属性

    array = np.array([[1,2,3],[4,5,6]])#将列表转换为矩阵,并转换为int类型

    print(array)

    print('array of dim is',array.ndim)#矩阵的维度

    print('array of shape is',array.shape)#矩阵的行数和列数

    print('array of size is',array.size)#矩阵元素个数

    #4.2 :numpy:numpy创建Array

    1,array:创建数组

    2,dtype:指定数据类型

    3,zeros:创建数据全为零

    4,ones:创建数据全为一

    5,empty:创建数据接近零

    6,arange:指定范围内创建数据

    7,linspace:创建线段

    #创建数组

    a = np.array([1,2,3])

    print(a)

    #指定数据dtype

    a = np.array([1,2,3],dtype=np.int)#指定为int形

    print(a.dtype)

    b = np.array([1,2,3,4],dtype=np.float)#指定为浮点型

    print(b.dtype)

    #创建特定数据

    a = np.array([[1,2,3],[4,5,6]])#创建特定数据

    print(a)

    #创建全0数组

    a = np.zeros((2,3))#全0两行三列

    print(a)

    #创建全1数组,指定特定类型int

    a = np.ones((2,3),dtype=np.int)

    print(a)

    #创建全空数组 每个数值接近0

    a = np.empty([2,3])

    print(a)

    #array创建连续数组

    a = np.arange(1,10,3)#1到10,步长为3

    print(a)

    #reshape改变数据形状

    a = np.arange(6).reshape(2,3)

    print(a)

    #用linespace创建线段型数据

    a = np.linspace(1,10,20)#1开始,10结束,创建10个数据

    print(a)

    #4.3 NumPy基础运算
    #基础运算只加减乘除

    a = np.array([10,20,30,40])

    b = np.arange(4)

    print(b)

    c = a+b#加法运算

    print(c)

    d = a-b

    print(d)#减法运算

    e = 10*np.sin(a)#三角函数运算

    print(e)

    print(b<3)#逻辑判断

    f = np.random.random([2,3])#随机生成两行三列的举证

    print(f)

    g = np.sum(b)#函数求和

    print(g)

    h = np.max(b)#求元素最大值最小值

    i = np.min(b)

    print(h)

    print(i)

    #多维数矩阵运算

    a = np.array([[1,2],[3,4]])

    print(a)

    b = np.arange(4).reshape(2,2)

    print(b)

    c = a.dot(b)#c = dot(a,b) 矩阵相乘相乘计算

    print(c)

    #对行或列进行查找运算

    a = np.array([[1,2],[3,4]])

    print(np.max(a,axis=0))#按行求和最大值

    print(np.max(a,axis=1))#按列求和最大值

    print(np.min(a,axis=0))

    print(np.min(a,axis=1))

    #矩阵索引操作

    a = np.arange(2,14).reshape(3,4)

    print(a)

    print(np.argmax(a))#矩阵中最大元素的索引

    print(np.argmin(a))#矩阵中最小元素的索引

    print(np.mean(a))#求解矩阵均值

    print(np.average(a))

    print(np.cumsum(a))#矩阵累加函数

    print(np.diff(a))#矩阵累差函数

    print(np.nonzero(a))#将非0元素的行与列坐标分割开来

    #矩阵的排序转置替换

    a = np.arange(14,2,-1).reshape(3,4)

    print(a)

    print(np.sort(a))#排序

    print(np.transpose(a))#转置

    print(np.clip(a,5,9))#判断当前矩阵元素是否比最小值小或比最大值大,若是则替换

    #一维索引

    a = np.arange(0,12)

    print(a)

    print(a[1])

    b = np.arange(0,12).reshape(3,4)

    print(b)

    print(b[1])#第二行

    #二维索引

    a = np.arange(0,12).reshape(3,4)

    print(a)

    print(a[1,1])

    print(a[1,1:3])#切片处理

    for row in a:

    print(row)

    for col in a:

    print(col)

    for item in a.flat:

    print(item)

    #array置array合并

    a = np.array([1,1,1])

    b = np.array([2,2,2])

    print(np.vstack((a,b)))#上下合并

    print(np.hstack((a,b)))#左右合并

    #增加维度

    a = np.array([1,1,1])

    print(a.shape)

    print(a[np.newaxis,:])

    print(a[np.newaxis].shape)#newaxis增加维度

    print(a[:,np.newaxis])

    print(a[:,np.newaxis].shape)

    #多矩阵合并

    a = np.array([1,1,1])[:,np.newaxis]

    b = np.array([2,2,2])[:,np.newaxis]

    print(np.concatenate((a,b,b,a),axis=0))#表示上下合并

    print(np.concatenate((a,b,b,a),axis=1))

    #矩阵分割

    a = np.arange(0,12).reshape(3,4)

    print(a)

    print(np.split(a,3,axis=0))#横向分割三部分np.vsplit(a,3)

    print(np.split(a,2,axis=1))#竖向分割三部分

    print(np.array_split(a,3,axis=1))#不等量分割三部分

    #copy 与 deep copy

    = 具有关联性

    a = np.arange(4)

    b = a

    c = a

    d = b

    print(b is a)

    d[0] = 5

    print(a)

    #copy赋值方法没有关联性

    a = np.arange(4)#deep copy

    print(a)

    b = a.copy()

    print(b)

    print(a)

    b[0] = 5

    print(b)

    print(a)

关键字