美文网首页Numpy
class_5_(1)NumPy入门

class_5_(1)NumPy入门

作者: AlexLJS | 来源:发表于2019-01-31 18:14 被阅读1次

    (个人笔记,仅仅介绍入门操作,详细操作见后续)

    一、NumPy

    提升科学计算效率的包。此处略过安装,安装了anaconda 就不用pip install。
    from numpy import *
    import numpy as np
    主要功能: 处理数组运算,支持高维数组。Python 中也存在如list/array的数据结构,调用numpy的数组,在求和以及其他运算上效率更高。
    Ndarray对象:Numpy中用于存放N维数组的对象,指向内存中连续区域。可以用array()方法创建。


    1、数组创建:array() arange()

    py数组转化:

    import numpy as np
    
    data = [1,2,3]
    ary_1 = np.array(data)
    ary_2 = np.array([[1.1,2,3.2],[4,5.0,6]])
    
    print(ary_1)
    print(ary_1.dtype)
    print(ary_2)
    print(ary_2.dtype)
    
    

    注:
    支持不规范数组创建。
    Numpy中数据类型超过python。可以用astype(数据类型)指定数组对象的数据类型。

    批量创建:
    arange(10):创建array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    arange(1,5): array([1, 2, 3, 4])
    arange(1,6,2):创建1-6步长为2,array([1, 3, 5])

    zeros():创建初始元素为0数组
    empty():创建空数组

    print(np.arange(10))
    print(np.arange(1,5))
    print(np.arange(1,6,2))
    print(np.zeros((3,6)))#生成3行6列二维数组
    print(np.empty((2,3,2)))
    

    注:注意区分范围与维度。
    转化py现有数据结构:asarray() 用法类似array() ,可以将元组和元组列表转化为ndarray对象。

    2、数组切片与索引

    传统数组切片 : 左闭右开
    ary_3 = np.arange(10)
    print(ary_3[3:6])

    高维数组切割:

    ary_2 = np.array([[1.1,2,3.2],[4,5.0,6]])
    print(ary_2[0])
    print(ary_2[0,1])
    print(ary_2[...,1])#2列
    print(ary_2[0,...])#2行
    

    注:copy()复制值到另一个变量。不把值copy下来python视为引用,数据联动。
    value = aray_2[0].copy()

    slice():

    a = arange(10)
    s = slice(2,5)
    a[s]
    Out:array([2, 3, 4])
    
    b = arange(1,20,2)
    print(b[1:3])
    Out:[3 5]
    

    reshape(row,col):将数组重构,例如将一维数组改成二维数组

    c = arange(12).reshape(3,4)
    c[1,3] #取第二行第三列元素
    c[1,...]#取第二行,使用代替符 ...
    

    总结索引 :即筛选数组中元素。
    布尔索引:传入布尔表达式,如c[c>6] 查找大于6元素。
    整数索引:用整数下标索引,传入负数则从后往前索引。
    花式索引:利用整数数组进行索引,就是上文提到的reshape。

    3、随机数创建

    random.rand() #生成0~1随机数
    random.rand(1)#生成seed为1随机数
    
    random.rand(3,2).reshape(2,3) #种子 3 2 ,2行3列随机数组
    
    random.randint() # 生成整数
    

    随机选择内容:random.choice(list)
    可以传入list 可以随机生成对应的随机矩阵.
    注:
    random.seed(int) 设置种子

    4、数组运算

    numpy可以对数组进行加减乘除运算, 免去了写循环。

    ary_4 = np.arange(12).reshape(3,4)
    print(ary_4)
    print(ary_4*2)
    print(ary_4+3)
    

    注:numpy内置了许多数学函数,abs、sqrt、log、exp…

    转置:transpose()
    print(ary_4.transpose())

    ary_4 = np.arange(12).reshape(3,4)
    print(ary_4)
    print(ary_4*2)
    print(ary_4+3)
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
    [[ 0  2  4  6]
     [ 8 10 12 14]
     [16 18 20 22]]
    [[ 3  4  5  6]
     [ 7  8  9 10]
     [11 12 13 14]]
    
    print(ary_4.transpose())
    [[ 0  4  8]
     [ 1  5  9]
     [ 2  6 10]
     [ 3  7 11]]
    

    相关文章

      网友评论

        本文标题:class_5_(1)NumPy入门

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