1. Numpy入門,看這一篇就夠了!

        共 4041字,需瀏覽 9分鐘

         ·

        2021-10-23 10:49


        大家好,我是J哥。??


        本文系統(tǒng)講解Numpy基礎知識,對于初學數據處理和分析幫助很多,希望你能收藏此文,好好學習,以下是本文框架結構:



        本文目錄





        定義









        數組類型



        基本類型




        類型轉換


        ? ?In:

        j?=?np.arange(3)??
        print(j)
        print('查看數據類型:\n',j.dtype)
        print('-'*20)
        g?=?j.astype('float')?#轉換為float類型
        print('查看轉換后類型:\n',g.dtype)

        ? Out:

        [0?1?2]
        查看數據類型:
        ?int64
        --------------------
        查看轉換后類型:
        ?float64






        數組操作



        創(chuàng)建數組


        ? ?In:

        #方法一、將列表或元組傳入np.array()來創(chuàng)建
        print(np.array([1,2,3]))?
        #方法二、初始化數組的值,只需傳入元素個數即可
        print(np.ones(3))
        print(np.zeros(3))
        print(np.random.random(3))

        ? Out:
        [1?2?3]
        [1.?1.?1.]
        [0.?0.?0.]
        [0.71318806?0.95903425?0.75384478]


        數組運算


        In:
        #首先創(chuàng)建兩個數組
        data1?=?np.array([1,2])
        data2?=?np.ones(2)
        print(data1,data2)
        Out:
        [1?2]?[1.?1.]

        In:
        #數組間加減乘除
        jia?=?data1+data2
        jian?=?data1-data2
        cheng?=?data1*data2
        chu?=?data1/data2
        #數組與單個數值的操作
        shuzhi1?=?data1*100
        shuzhi2?=?data1/100
        print(jia,jian,cheng,chu,shuzhi1,shuzhi2)
        Out:
        [2.?3.]?[0.?1.]?[1.?2.]?[1.?2.]?[100?200]?[0.01?0.02]


        數組切片


        In:
        #類似列表操作進行索引和切片
        data3?=?np.array([1,2,3,4,5])
        print(data3)
        print(data3[0])
        print(data3[2:4])
        print(data3[2:])
        print(data3[:4])
        Out:
        [1?2?3?4?5]
        1
        [3?4]
        [3?4?5]
        [1?2?3?4]


        聚合函數


        In:
        data4?=?np.array([1,2,3,4,5])
        print(data4.max())?#最大值
        print(data4.min())?#最小值
        print(data4.mean())?#均值
        print(data4.sum())?#求和
        print(data4.std())?#標準差
        Out:
        5
        1
        3.0
        15
        1.4142135623730951





        矩陣操作



        創(chuàng)建矩陣


        In:
        #方法一、通過將二維列表傳給Numpy來創(chuàng)建矩陣
        print(np.array([[1,2],[3,4]]))
        #方法二、傳入一個元組來描述矩陣的維度
        print(np.ones((3,2)))?#3行2列矩陣
        print(np.zeros((3,2)))?
        print(np.random.random((3,2)))?
        Out:
        [[1?2]
        ?[3?4]]
        [[1.?1.]
        ?[1.?1.]
        ?[1.?1.]]
        [[0.?0.]
        ?[0.?0.]
        ?[0.?0.]]
        [[0.2928769??0.24093443]
        ?[0.06189287?0.62359846]
        ?[0.80539105?0.81706549]]


        矩陣運算


        In:
        #相同大小矩陣的加減乘除
        data5?=?np.array([[1,2],[3,4]])
        data6?=?np.ones((2,2))
        jia1?=?data5?+?data6
        cheng1?=?data5?*?data6
        print(jia1,'\n',cheng1)
        Out:
        [[2.?3.]
        ?[4.?5.]]?
        ?[[1.?2.]
        ?[3.?4.]]

        In:
        #不同大小矩陣的加減乘除(僅兩個矩陣秩數為1時)
        data7?=?np.array([[1,2],[3,4],[5,6]])
        data8_1?=?np.ones((1,2))?#行秩為1
        data8_2?=?np.ones((3,1))?#列秩為1
        print(data7?+?data8_1)
        print('-'*20)
        print(data7?+?data8_2)
        Out:
        [[2.?3.]
        ?[4.?5.]
        ?[6.?7.]]
        --------------------
        [[2.?3.]
        ?[4.?5.]
        ?[6.?7.]]

        In:
        #矩陣乘法,dot()方法
        data9?=?np.array([[1,2,3]])?#1*3的矩陣
        data10?=?np.array([[1,2],[3,4],[5,6]])?#3*2的矩陣
        data11?=?data9.dot(data10)?#1*2的矩陣
        print(data11)
        Out:
        [[22?28]]


        矩陣切片和聚合


        In:
        #可以在不同維度上使用索引操作來對數據進行切片
        data12?=?np.array([[1,2],[3,4],[5,6]])
        print(data12)
        print(data12[0,1])?#1行2列數據
        print(data12[1:3])?#2-3行
        print(data12[0:2,0])?#1-2行,1列
        Out:
        [[1?2]
        ?[3?4]
        ?[5?6]]
        2
        [[3?4]
        ?[5?6]]
        [1?3]

        In:
        #可以像聚合向量一樣聚合矩陣
        print(data12.max())
        print(data12.min())
        print(data12.sum())
        print(data12.mean())
        print(data12.std())
        #還可以使用axis參數指定行和列的聚合
        print(data12.max(axis?=?0))?#縱向執(zhí)行
        print(data12.max(axis?=?1))?#橫向執(zhí)行
        Out:
        6
        1
        21
        3.5
        1.707825127659933
        [5?6]
        [2?4?6]


        矩陣轉置和重構


        In:
        #NumPy數組的屬性T可用于獲取矩陣的轉置
        print('轉置前:\n',data12)
        print('轉置后:\n',data12.T)
        Out:
        轉置前:
        ?[[1?2]
        ?[3?4]
        ?[5?6]]
        轉置后:
        ?[[1?3?5]
        ?[2?4?6]]


        In:

        #在較為復雜的用例中,可能需要使用NumPy的reshape()方法改變某個矩陣的維度
        data13?=?np.array([1,2,3,4,5,6])
        print('重構前:\n',data13)
        print('重構后:\n',data13.reshape(2,3))
        print('重構后:\n',data13.reshape(3,2))

        Out:

        重構前:
        ?[1?2?3?4?5?6]
        重構后:
        ?[[1?2?3]
        ?[4?5?6]]
        重構后:
        ?[[1?2]
        ?[3?4]
        ?[5?6]]


        In:

        #上文中的所有功能都適用于多維數據,其中心數據結構稱為ndarray(N維數組)
        data14?=?np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
        print(data14)
        print('-'*20)
        #改變維度只需在NumPy函數的參數中添加一個逗號和維度
        print(np.ones((4,3,2)))
        print('-'*20)
        print(np.zeros((4,3,2)))
        print('-'*20)
        print(np.random.random((4,3,2)))

        Out:

        [[[1?2]
        ??[3?4]]

        ?[[5?6]
        ??[7?8]]]
        --------------------
        [[[1.?1.]
        ??[1.?1.]
        ??[1.?1.]]

        ?[[1.?1.]
        ??[1.?1.]
        ??[1.?1.]]

        ?[[1.?1.]
        ??[1.?1.]
        ??[1.?1.]]

        ?[[1.?1.]
        ??[1.?1.]
        ??[1.?1.]]]
        --------------------
        [[[0.?0.]
        ??[0.?0.]
        ??[0.?0.]]

        ?[[0.?0.]
        ??[0.?0.]
        ??[0.?0.]]

        ?[[0.?0.]
        ??[0.?0.]
        ??[0.?0.]]

        ?[[0.?0.]
        ??[0.?0.]
        ??[0.?0.]]]
        --------------------
        [[[0.37593802?0.42651876]
        ??[0.74639264?0.19783467]
        ??[0.787414???0.63820259]]

        ?[[0.84871262?0.46467497]
        ??[0.54633954?0.4376995?]
        ??[0.71988166?0.9306682?]]

        ?[[0.6384108??0.74196991]
        ??[0.73857164?0.38450555]
        ??[0.68579442?0.64018511]]

        ?[[0.60382775?0.35889667]
        ??[0.8625612??0.86523028]
        ??[0.83701853?0.08289658]]]






        公式應用





        In:

        #在NumPy中可以很容易地實現均方誤差。
        np_1?=?np.ones(3)
        np_2?=?np.array([1,2,3])
        error?=?(1/3)?*?np.sum(np.square(np_1?-?np_2))
        print(error)

        Out:

        1.6666666666666665






        表示日常數據




        電子表格和數據表




        音頻和時間序列




        圖像


        黑白圖像


        彩色圖像


        瀏覽 39
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 国产蜜臀97一区二区三区 | 麻豆国产精品永久免费视频 | 性爱视频播放器 | 小早川怜子巨臀无码流出 | 国产免费一区二区三区 |