[TOC]
# 創建二維數組
~~~
import numpy as np
tang_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(tang_array)
# 打印shape
print(tang_array.shape)
# 元素個數
print(tang_array.size)
# 查看幾維
print(tang_array.ndim)
~~~
輸出
~~~
[[1 2 3]
[4 5 6]
[7 8 9]]
(3, 3)
9
2
~~~
# 索引和切片

~~~
# 行,列
print(tang_array[1, 1])
print(tang_array[1])
# 想取第1列,開始是第0列開始
# : 表示取所有行,1表示所有列中第一個值
print(tang_array[:, 1])
# 取第0行,前2個值
print(tang_array[0, 0:2])
~~~
輸出
~~~
5
[4 5 6]
[2 5 8]
[1 2]
~~~
# 值的改變
~~~
# 改變中間列的中間的值
tang_array2 = tang_array
tang_array2[1, 1] = 100
print(tang_array2)
print(tang_array)
~~~
輸出
~~~
[[ 1 2 3]
[ 4 100 6]
[ 7 8 9]]
[[ 1 2 3]
[ 4 100 6]
[ 7 8 9]]
~~~
發現原始值也改變了
如果想不影響原來的,需要
~~~
tang_array2 = tang_array.copy()
~~~
# 構造其他數組
## 等差數組
~~~
import numpy as np
# 構造等差數組,在0-100之間,左閉右開
# 這些數字中每10個就構造
tange_array = np.arange(0, 100, 10)
print(tange_array)
~~~
輸出
`[ 0 10 20 30 40 50 60 70 80 90]`
## 根據dtype值來構造
~~~
import numpy as np
# 根據值并指定dtype類型來構造
mask = np.array([0,0,0,4,3,1], dtype=bool)
print(mask)
~~~
輸出
`[False False False True True True]`
## 布爾值的數組還可以作為下標
~~~
import numpy as np
tang_array = np.arange(0, 100, 10)
mask = np.array([0, 0, 0, 4, 3, 1, 0, 1, 0, 0], dtype=bool)
# 要求mask這個數組元素個數和tang_array個數對應起來
print(tang_array[mask])
~~~
輸出
`[30 40 50 70]`
## 構造隨機數并根據大小轉bool
~~~
import numpy as np
random_array = np.random.rand(10)
print(random_array)
mask = random_array > 0.5
print(mask)
~~~
輸出
~~~
[ 0.55235889 0.56457011 0.41540999 0.12196489 0.23038023 0.97832018
0.57625532 0.99925087 0.36584497 0.07388756]
[ True True False False False True True True False False]
~~~
## 找出大于這個值的索引
~~~
import numpy as np
tang_array = np.array([10, 20, 30, 40, 50])
# 找出大于30的索引
print(np.where(tang_array > 30))
~~~
輸出
`(array([3, 4]),)`
**也可以根據這個索引打印出對應的值**
~~~
print(tang_array[np.where(tang_array > 30)])
~~~
輸出
`[40 50]`