[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
~~~
# 索引和切片
![](https://box.kancloud.cn/057544a20eecfdbc6c3497504ecf186c_360x178.png)
~~~
# 行,列
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]`