參考了: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]])
介紹到此。