• python基础---有关nparray----切片和索引(一)


        Numpy最重要的一个特点就是其N维数组对象,即ndarray,该对象是一种快速而灵活的大数据集容器,实际开发中,我们可以利用这种数组对整块数据执行一些数学运算。

        有关ndarray,我们就从最简单的一维数组操作以及其构造开始说起:

        

    import numpy as np
    
    if __name__ == '__main__':
        print(1)
        #输出一个字典对象i+rand
    print({i :np.random.rand() for i in range(2)})
        #输出字典对象i+list(rand)
    print({i: np.random.rand(2) for i in range(2)})
    
        #在变量前面加一个?问号,可以将有关该对象的一些通用信息显示出来
    a=[]
    
        for i in range(3):
            #这里b就是一个有3个随机小数的数组
    b = np.random.rand(3)
            print(b.shape)
            print(b)
            a.append(b)
        print(a)
    
        #从管道中输出a
        # print(a.pop(0))
        # print(a)
        #通过array这个方法将a数组转成nparray
    c=np.array(a)
        print("c============",c)
    
        #这里随机获取一个二维数组
    d=np.empty((3,6))
        print(d)
    
    
        #np的基本索引和切片
        #先生成一个从0到10的一维数组[0 1 2 3 4 5 6 7 8 9]
    arr=np.arange(10)
    
        #针对这个np我们可以简单切片,比如我要获取5,6,7可以通过这个方法:arr[开始的index,结束的index],这里的index从0开始,
        #左包含右不包含
    arr1=arr[5:8]
        print(arr1)
    
        #对一个切片进行赋值时,该值会传播整个选取:比如arr[5:8]=12的输出值就是[ 0  1  2  3  4 12 12 12  8  9]
    arr[5:8]=12
    print(arr)
    
        #如果操作需要,我们可以针对切片中再一次进行切片赋值
    arr_slice=arr[4:8]  #[4,12,12,12]
    print(arr_slice[0]) #4
    print(arr_slice[1])  # 12
    arr_slice[0:2]=89
    print(arr_slice)    #[89 89 12 12]
    print(arr)  #[ 0  1  2  3 89 89 12 12  8  9]
        #如果你想要得到的是ndarray切片的一份副本而不是视图,就需要进行复制操作,比如
    arrCopy=arr.copy()
        print(arrCopy)

    当然,针对多元的数据更加需要多元的数组,比如二维数组,这里针对二维数组切片和索引进行简单的讲解:

    #如果是多维数组,比如一个二维数组,我们操作可以如下,先生成一个2维数组:[[0 1 2][3 4 5][6 7 8]]
    x=[]
    for i in range(3):
    
        x1=np.arange(3*i,3*i+3)
        x.append(x1)
    
    arr2d=np.array(x)
    print(arr2d)
    
    #我们可以看看这个二维数组如何切片,有关切片索引
    print(arr2d[1]) # [3 4 5]
    # 二维数组切片索引和一维稍微不同,以下两个两两等价
    print(arr2d[0:2])  # [[0 1 2][3 4 5]]
    print(arr2d[:2])  # [[0 1 2][3 4 5]]
    print(arr2d[2][0]) # 6
    print(arr2d[2,:1]) #[6]
    print(arr2d[2,:2])  #[6 7]
    #更多维数组操作也类似上面一样,举一反三

    更多维度的数组操作也类似上面,我们可以举一反三,除了这一部分之外,还有布尔索引和花式索引

    花式索引:花式索引是一个numpy术语,它指利用整数数组进行索引,例如,我们使用一个8*4的数组

    #有关花式索引
    #花式索引是一个numpy术语,它指利用整数数组进行索引,例如,我们使用一个8*4的数组
    # arr=np.empty((8,4))
    arr=np.arange(32).reshape((8,4))
    print(arr)
    
    #以特定顺序选取子集,这里选取的就是第5,4,1,7行的子数组
    print(arr[[4,3,0,6]])
    
    #如果我们使用负数索引,则选取的从末尾开始-1为最后一行,-2为倒数第二行
    print(arr[[-1,-2]])
    
    #这里输出的分别是arr第5行的第一个数,第4行的第2个数,第1行的第3个数和第7行的第4个数组成的数组
    print(arr[[4,3,0,6],[0,1,2,3]])
    
    #这里输出分别为arr第5,4,1,7行的第1,2,3个数组成的数组
    #[[16 17 18] [12 13 14] [ 0  1  2] [24 25 26]]
    print(arr[[4,3,0,6]][:,[0,1,2]])


  • 相关阅读:
    正则表达式
    cookie和session的区别(转载)
    Http协议
    10倍工程师
    10倍工程师
    HTML介绍
    HTML介绍
    网络基础之网络协议篇
    网络基础之网络协议篇
    计算机中的进制和编码
  • 原文地址:https://www.cnblogs.com/asd529735325/p/10216035.html
Copyright © 2020-2023  润新知