numpy建立array 老魚學numpy

2022-02-10 05:44:05 字數 3258 閱讀 1007

import numpy as np

# 陣列

a = [[1, 2, 3], [4, 5, 6]]

print("a:", a)

# 矩陣

b = np.array(a)

print("b:", b)

執行後輸出為:

a: [[1, 2, 3], [4, 5, 6]]

b: [[1 2 3]

[4 5 6]]

我們可以看到python中的陣列和numpy中的陣列在螢幕上輸出的一些細微的差異:

numpy中的陣列輸出中是按照行列排列的,並且元素之後是沒有逗號分隔的,這樣在螢幕輸出上我們就能很容易看矩陣,跟數學中矩陣的書寫格式比較接近。

我們也可以在建立numpy陣列時通過設定dtype來指定陣列中元素的型別,例如:

import numpy as np

# python陣列

a = [[1, 2, 3], [4, 5, 6]]

print("a:", a)

# numpy陣列

b = np.array(a, dtype=np.float)

print("b:", b)

上面我們就定義了numpy陣列元素的型別為float型別,其輸出為:

a: [[1, 2, 3], [4, 5, 6]]

b: [[ 1. 2. 3.]

[ 4. 5. 6.]]

在機器學習中,一般我們定義的元素型別為浮點型別np.float和整型np.int。

想要輸出3行4列全部為0的numpy二維陣列:

import numpy as np

a = np.zeros((3,4))

print(a)

輸出為:

[[ 0.  0.  0.  0.]

[ 0. 0. 0. 0.]

[ 0. 0. 0. 0.]]

我們也經常會用到全1的陣列:

import numpy as np

a = np.ones((3, 4), dtype=np.float)

print(a)

輸出為:

[[ 1.  1.  1.  1.]

[ 1. 1. 1. 1.]

[ 1. 1. 1. 1.]]

有人可能會注意到定義幾行幾列的方法,例如(3, 4),這個是python中的元組型別,本質上就是乙個陣列,但跟陣列不一樣的地方是其值是唯讀的,也就是不可改變元組中元素的值。

import numpy as np

a = np.empty((3, 4), np.float)

print(a)

輸出為:

[[  6.23042070e-307   3.56043053e-307   1.37961641e-306   2.22518251e-306]

[ 1.33511969e-306 1.24610383e-306 1.69118108e-306 8.06632139e-308]

[ 1.20160711e-306 1.69119330e-306 1.29062229e-306 1.29060531e-306]]

np.empty()用於生成接近於0的隨機數陣列。

例如:生成乙個從10開始到20結束(不包括結束值),步長為2的數列:

import numpy as np

a = np.arange(10, 20, 2)

print(a)

輸出為:

[10 12 14 16 18]
np.arange()還是經常會用到的,看到這個函式,使我聯想起python中的range函式,這兩者的功能類似,先看個例子:

import numpy as np

# python中建立range物件,然後我們把它轉換成list物件並列印出來

a = range(10, 20, 2)

print("python中的range物件:", list(a))

# numpy中的arange函式跟python中的range物件類似

b = np.arange(10, 20, 2)

print("numpy中的arange:", b)

輸出為:

python中的range物件: [10, 12, 14, 16, 18]

numpy中的arange: [10 12 14 16 18]

這裡arange可以記憶為array中的range函式。

numpy陣列的形狀非常重要,也就是幾行幾列。

在進行陣列/矩陣運算中要時刻關注陣列/矩陣是什麼樣的形狀,比如陣列/矩陣的加法、陣列/矩陣的叉乘中對其形狀都有相應較嚴格的規定。

有時為了能夠改變陣列/矩陣的形狀,就需要呼叫np.reshape()的函式。

例如:

import numpy as np

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

print(a)

輸出為:

[[ 0  1  2  3]

[ 4 5 6 7]

[ 8 9 10 11]]

import numpy as np

a = np.linspace(1, 10, 20)

print(a)

輸出為:

[  1.           1.47368421   1.94736842   2.42105263   2.89473684

3.36842105 3.84210526 4.31578947 4.78947368 5.26315789

5.73684211 6.21052632 6.68421053 7.15789474 7.63157895

8.10526316 8.57894737 9.05263158 9.52631579 10. ]

上述語句生成了從1開始到10,總共有20個數等距的數列。

你可以把它們想象成起始是1,終止是10,總共有20個等距點。

numpy的array合併 老魚學numpy

本節主要講述如何把兩個陣列按照行或列進行合併。例如 import numpy as np a np.array 1,1,1 b np.array 2,2,2 print np.vstack a,b 合併後輸出結果為 1 1 1 2 2 2 import numpy as np a np.array ...

numpy的索引 老魚學numpy

import numpy as np a np.arange 3,15 reshape 3,4 print a print a print 第2行的資料 a 2 print 第2行第3列的資料 a 2 3 輸出為 a 3 4 5 6 7 8 9 10 11 12 13 14 第2行的資料 11 12...

numpy array分割 老魚學numpy

有合併,就有分割。本節主要講述如何通過numpy對陣列進行橫向 縱向分割。首先建立乙個6行4列的陣列,然後我們對此陣列按照橫向進行切割,分成3塊,這樣每塊應該有2行,見例子 import numpy as np a np.arange 24 reshape 6,4 print a print a p...