>

LoeiJe

:D 获取中...

何以解忧?唯有暴富

numpy学习笔记

numpy学习笔记
数组方法

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 2019-10-25
# numpy 学习笔记
# icenaive
# 参考: https://github.com/lijin-THU/notes-python
# 仅供个人学习使用
#
# 5. 数组方法

import numpy as np

# 求和
a = np.array([[1, 2, 3],
[4, 5, 6]])
b = a[0]

print(a)
s = sum(b) # python 中sum 二维对应相加
print(s)
print(np.sum(a))

# 指定求和的维度
# 沿着第一维求和
print(np.sum(a, axis = 0))

# 沿着第二维求和
print(np.sum(a, axis = 1))

# 支持负索引
print(np.sum(a, axis = -2))

# 或者使用sum方法
print(a.sum())

print(a.sum(axis = 0))
print(a.sum(axis = -1))

# 求积
# 求所有元素的积
print(a.prod())

# 或者使用函数调用的形式
print(np.prod(a, axis = 0))
print(np.prod(a, axis = -1))

# 求最值
# numpy输出精度控制
np.set_printoptions(precision = 3)
a = np.random.rand(3, 4)
print(a)

# round() python 内置方法 设定输出精度
# 全局最小
print(round(a.min(), 3), round(a.max(), 4))

# 沿着某一个轴的最小值
print(a.min(axis = 0), a.max(axis = -1))

# 最大最小值的位置
# 使用 argmin, argmax 方法
print(a)
print(a.min())
print(a.argmin())
print(a.argmin(axis = 0))
print(a.argmax())
print(a.argmax(axis = -1))

# 使用mean 方法
# 均值
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
print(a.mean())

# 也可以使用mean函数
print(np.mean(a))
# 也可以使用average函数
print(np.average(a, axis = 0))

# average 函数还支持加权平均
# 每个值乘以权重 在 除以 权重之和
# 例如 3 = (1 * 1 + 4 * 2) / (1 + 2)
print(a)
print(np.average(a, axis= 0, weights = [1, 2]))


# 标准差
# 用std方法计算标准差
print("a= \n", a)
print(a.std(axis = 0))

# 用var方法计算方差
print(a.var(axis = -1))

# 或者使用函数方式
print(np.var(a, axis = 1))
print(np.std(a, axis = -2))

# clip方法
# 将数值限制在某个范围
print(a)
print(a.clip(3, 5))
print(a)
# 小于3的变成3 大于5的变成5

# ptp方法
# 计算最大值与最小值之差
print(a.ptp(axis = 1))
print(a.ptp())

# round方法
# 近似 默认到整数
a = np.array([1.35, 2.5, 1.5])
# 这里对于 .5是近似到最近的偶数值
# round()如果只有一个数作为参数,不指定位数的时候,返回的是一个整数,
# 而且是最靠近的整数(这点上类似四舍五入)。但是当出现.5的时候,两边的距离都一样,round()取靠近的偶数,这就是为什么round(2.5) = 2。
# 当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则,但是碰到.5的这样情况,
# 如果要取舍的位数前一个数是奇数,则直接舍弃,如果偶数这向上取舍

print(round(2.635, 2)) # 前一个数 3 舍弃
print(round(2.645, 2)) # 前一个数 4 向上取舍
print(round(2.5))
print(round(3.5)) # 返回4 向上取舍

print(a.round())
# 近似到一位小数
print(a.round(decimals = 1))