numpy
属性
1 | import numpy as np |
- array.ndim 打印维度
- array.shape 打印行列数
- array.size 打印元素个数
运行结果:1
2
3
4
5[[1 2 3]
[4 5 6]]
number of dim: 2
shape: (2, 3)
size 6
创建array
np.array
使用这种方法创建的数组类似于列表 但是没有逗号1
2a=np.array([2,3,4],dtype=np.int) #dtype设置显示的类型
print(a) #类似于列表 但是没有逗号
- dtype 设置显示的类型
运行结果1
[2 3 4]
创建全是0的array
1 | a=np.zeros((3,4),dtype=np.int) #生成一个3行4列 为0的矩阵 |
运行结果:1
2
3[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
指定范围创建array
1 | a = np.arange(10,20,2) #从10到20 步长为2 |
运行结果:
1 | [10 12 14 16 18] |
还可以指定行列1
2a = np.arange(12).reshape((3,4)) #生成3行4列从0到11的矩阵
print(a)
运行结果:1
2
3[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
基础运算
四则运算
1 | a = np.array([10,20,30,40]) |
运行结果:1
2
3
4
5
6数组a:
[10 20 30 40]
数组b:
[0 1 2 3]
运算结果:
[10 19 28 37]
其他类似
平方
1 | a = np.array([10,20,30,40]) |
运行结果:1
2
3
4
5
6数组a:
[10 20 30 40]
数组b:
[0 1 2 3]
运算结果:
[ 1 20 900 64000]
三角函数
1 | a = np.array([10,20,30,40]) |
运行结果:1
2
3
4
5
6数组a:
[10 20 30 40]
数组b:
[0 1 2 3]
运算结果:
[-5.44021111 9.12945251 -9.88031624 7.4511316 ]
判断
1 | a = np.array([10,20,30,40]) |
运行结果1
2
3
4数组b:
[0 1 2 3]
运算结果:
[ True True True False]
逐个相乘
1 | a = np.array([[1,1], |
运行结果:1
2
3
4
5
6
7
8
9数组a:
[[1 1]
[0 1]]
数组b:
[[0 1]
[2 3]]
运行结果:
[[0 1]
[0 3]]
矩阵乘法
1 | a = np.array([[1,1], |
运算结果:1
2
3
4
5
6
7
8
9数组a:
[[1 1]
[0 1]]
数组b:
[[0 1]
[2 3]]
运行结果:
[[2 4]
[2 3]]
求和_最大(小)值
1 | a = np.random.random((2,4)) #随机生成2行4列的矩阵 |
运行结果:1
2
3
4
5
6
7
8
9数组a:
[[0.43408198 0.78606556 0.54177785 0.1037451 ]
[0.94012845 0.88517271 0.9114281 0.56670466]]
行求和:
[1.86567049 3.30343392]
列求最小值
[0.43408198 0.78606556 0.54177785 0.1037451 ]
求最大值
0.9401284531215222
求索引
1 | A = np.arange(2,14).reshape((3,4)) |
运行结果1
2
3
4
5
6
7[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
最小值的索引
0
最大值的索引
11
平均数_中位数
1 | A = np.arange(2,14).reshape((3,4)) |
运行结果:1
2
3
4
5
6
7[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
平均数
7.5
中位数
7.5
前n项和
1 | A = np.arange(2,14).reshape((3,4)) |
运行结果:1
2
3
4
5[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
前n项和
[ 2 5 9 14 20 27 35 44 54 65 77 90]
逐差
就是前一个数减后一个数1
2
3
4
5A = np.arange(2,14).reshape((3,4))
print(A)
print("逐步差")
print(np.diff(A)) #逐步差
运行结果:1
2
3
4
5
6
7[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
逐步差
[[1 1 1]
[1 1 1]
[1 1 1]]
非0的数
1 | A = np.arange(2,14).reshape((3,4)) |
运行结果:1
2
3
4
5
6[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
非0的数
(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1,
2, 3, 0, 1, 2, 3], dtype=int64))
第一个array返回的是行的下标 第二个array返回的是列的下标
如果为0 则不返回
逐行排序
1 | A = [[9,8,7], |
运行结果:1
2
3
4
5[[9, 8, 7], [6, 5, 4], [3, 2, 1]]
逐行排序
[[7 8 9]
[4 5 6]
[1 2 3]]
转置
1 | A = np.arange(2,14).reshape((3,4)) |
运行结果:1
2
3
4
5
6
7
8[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
矩阵的转置
[[ 2 6 10]
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]]
填充
1 | A = np.arange(2,14).reshape((3,4)) |
运行结果:1
2
3
4
5
6
7[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
所有小于5的数都变成5 所有大于9的数都变成9 中间的数就正常保留
[[5 5 5 5]
[6 7 8 9]
[9 9 9 9]]
对列平均运算
1 | A = np.arange(2,14).reshape((3,4)) |
运行结果:1
2
3
4
5[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
对于列进行平均运算
[6. 7. 8. 9.]
索引
1 | A = np.arange(3,15).reshape((3,4)) |
运行结果1
2
3
4
5
6
7
8
9
10
11
12
13[[ 3 4 5 6]
[ 7 8 9 10]
[11 12 13 14]]
输出第2行
[11 12 13 14]
输出第2行第1个元素
12
输出第1行第1个元素
8
输出第2行的所有数
[11 12 13 14]
输出第1列的所有数
[ 4 8 12]
迭代
1 | A = np.arange(3,15).reshape((3,4)) |
运行结果:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27[[ 3 4 5 6]
[ 7 8 9 10]
[11 12 13 14]]
转置后输出列
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]
[ 6 10 14]
输出行
[3 4 5 6]
[ 7 8 9 10]
[11 12 13 14]
迭代每一个元素以列表形式返回
[ 3 4 5 6 7 8 9 10 11 12 13 14]
迭代每个元素
3
4
5
6
7
8
9
10
11
12
13
14
array的合并
1 | A = np.array([1,1,1]) |
运行结果:1
2
3
4
5
6
7
8
9
10
11
12
13垂直合并
[[1 1 1]
[2 2 2]]
水平合并
[1 1 1 2 2 2]
行方面加了一个维度
[[1 1 1]]
(1, 3)
列方面加了一个维度
[[1]
[1]
[1]]
(3, 1)
多array合并
1 | A = np.array([1,1,1])[:,np.newaxis] |
运行结果:1
2
3[[1 2 2 1]
[1 2 2 1]
[1 2 2 1]]
array分割
1 | A = np.arange(12).reshape((3,4)) |
运行结果:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
垂直分割
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
水平分割
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
水平分割
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
垂直分割
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]