python 的2維數組

參考了:https://zhuanlan.zhihu.com/p/88197389

用list 創建2維數組

list是支持操作符,如果一個列表與 ‘ * ’ 號結合使用,能達到重複列表的效果。比如

list_one = [0]
list_two = [0] * 3
print(list_one)
print(list_two)

結果爲:
[0]
[0, 0, 0]

利用這個重複特性,是否可以來創建一個二維數組呢?

list_two = [[0] * 3] * 3
print(list_two)
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

但是,數據更新有問題

list_two[1][1]=10
print(list_two)
[[0, 10, 0], [0, 10, 0], [0, 10, 0]]

應該這樣:

list_three = [[0 for i in range(3)] for j in range(3)]
print(list_three)
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

更新時:

list_three[1][1]=22
print(list_three)
[[0, 0, 0], [0, 22, 0], [0, 0, 0]]

用NumPy 模塊創建數組

用Numpy 執行效率更改

import numpy as np
# 創建一維數組
nd_one = np.array([1, 2, 3])
# 創建二維數組
nd_two = np.array([[1, 2, 3], [4, 5, 6]])

print(nd_one)
[1 2 3]

print(nd_two)
[[1 2 3]
 [4 5 6]]

也可以這樣

bb=np.array(np.mat('1 2; 3 4'))

print(bb)

輸出爲:

[[1 2]
 [3 4]]

運行:

arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])

print('5th element on 2nd dim: ', arr[1, 4])

結果爲:
5th element on 2nd dim:  10

也可以更多維數組,比如3維

運行:

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

print(arr[0, 1, 2])

結果爲:
6

使用 Numpy 的內置函數

使用arange 或 linspace 創建連續數組

# arange() 類似Python內置函數的 range()
# arange(初始值, 終值, 步長) 不包含終值
x0 = np.arange(1, 11, 2)
print(x0)

結果爲:
[1 3 5 7 9]

# 創建一個 5x3 的數組
x1 = np.arange(15).reshape((5, 3))
print(x1)

結果爲:
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]

運行

# linspace()線性等分向量
# linspace(初始值, 終值, 元素個數) 包含終值
x2 = np.linspace(1, 11, 6)
print(x2)

結果爲:
[ 1.  3.  5.  7.  9. 11.]

使用 zeros(),ones(),full() 創建數組

# 創建一個 3x4 的數組且所有值全爲 0
x3 = np.zeros((3, 4), dtype=int)
print(x3)

結果爲:
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]

# 創建一個 3x4 的數組且所有元素值全爲 1
x4 = np.ones((3, 4), dtype=int)
print(x4)

結果爲:
[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]

# 創建一個 3x4 的數組,然後將所有元素的值填充爲 2
x5 = np.full((3, 4), 2, dtype=int)
print(x5)

結果爲:
[[2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]]

使用 eye() 創建單位矩陣

# 創建 3x3 的單位矩陣
x6 = np.eye(3, dtype=int)
print(x6)

結果爲:
[[1 0 0]
 [0 1 0]
 [0 0 1]]

使用 diag() 創建對角矩陣

x7 = np.diag([1, 2, 3])
print(x7)

結果爲:
[[1 0 0]
 [0 2 0]
 [0 0 3]]

使用 random 創建隨機數組

# 創建一個值在 [0, 10) 區間的 3x3 的隨機整數
x10 = np.random.randint(0, 10, (3, 3))
print(x10)

結果爲:
[[6 4 7]
 [3 6 3]
 [5 2 6]]

使用 reshape變換維數

x11=np.arange(0,15)

x11
Out[65]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])

x11.reshape(3,5)
Out[66]: 
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

介紹到此。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章