>

LoeiJe

:D 获取中...

何以解忧?唯有暴富

numpy学习笔记

numpy学习笔记

作用
1 基本属性
a.dtype 数组元素类型 float32,uint8,...
a.shape 数组形状 (m,n,o,...)
a.size 数组元素数
a.itemsize 每个元素占字节数
a.nbytes 所有元素占的字节
a.ndim 数组维度
2 形状相关
a.flat 所有元素的迭代器
a.flatten() 返回一个1维数组的复制
a.ravel() 返回一个1维数组,高效
a.resize(new_size) 改变形状
a.swapaxes(axis1, axis2) 交换两个维度的位置
a.transpose(*axex) 交换所有维度的位置
a.T 转置,a.transpose()
a.squeeze() 去除所有长度为1的维度
3 填充复制
a.copy() 返回数组的一个复制
a.fill(value) 将数组的元组设置为特定值
4 转化
a.tolist() 将数组转化为列表
a.tostring() 转换为字符串
a.astype(dtype) 转化为指定类型
a.byteswap(False) 转换大小字节序
a.view(type_or_dtype) 生成一个使用相同内存,但使用不同的表示方法的数组
5 复数
a.imag 虚部
a.real 实部
a.conjugate() 复共轭
a.conj() 复共轭(缩写)
6 保存
a.dump(file) 将二进制数据存在file中
a.dump() 将二进制数据表示成字符串
a.tofile(fid, sep="",format="%s") 格式化ASCⅡ码写入文件
7 查找排序
a.nonzero() 返回所有非零元素的索引
a.sort(axis=-1) 沿某个轴排序
a.argsort(axis=-1) 沿某个轴,返回按排序的索引
a.searchsorted(b) 返回将b中元素插入a后能保持有序的索引值
8 元素数学操作
a.clip(low, high) 将数值限制在一定范围内
a.round(decimals=0) 近似到指定精度
a.cumsum(axis=None) 累加和
a.cumprod(axis=None) 累乘积
9 约简操作
a.sum(axis=None) 求和
a.prod(axis=None) 求积
a.min(axis=None) 最小值
a.max(axis=None) 最大值
a.argmin(axis=None) 最小值索引
a.argmax(axis=None) 最大值索引
a.ptp(axis=None) 最大值减最小值
a.mean(axis=None) 平均值
a.std(axis=None) 标准差
a.var(axis=None) 方差
a.any(axis=None) 只要有一个不为0,返回真,逻辑或
a.all(axis=None) 所有都不为0,返回真,逻辑与
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 2019-10-25 不更新时间了
# numpy 学习笔记
# icenaive
# 参考: https://github.com/lijin-THU/notes-python
# 仅供个人学习使用
#
# 10. 数组属性方法总结

import numpy as np

# 基本属性
a = np.array([[0, 1, 2, 3], [4, 5, 6, 7]])
print(a)

# 数组元素属性
print(a.dtype)
# 形状
print(a.shape)
# 元素数目
print(a.size)
# 单个元素所占字节的大小
print(a.itemsize)
# 所有元素所占字节
print(a.nbytes)
# 数据维度
print(a.ndim)

# 形状相关
for row in a:
print(row)

# 所有元素的迭代器
for elt in a.flat:
print(elt)

# 所有元素组成的一维数组 按照行排列
print(a.flatten())
print(a.ravel())

# 重新改变形状
a.resize((4, 2))
print(a)

# 交换两个轴的顺序
print(a.swapaxes(0 , 1))
print(a)

# 转置
print(a.transpose())
print(a)
print(a.T, a)

a = np.array([1, 2, 3])
print(a.shape)
a.resize(1, 3, 1)
print(a.shape)
# 去除长度为1的维度
a = a.squeeze()
print(a.shape)

# 填充复制
a = np.array([[0, 1],
[2, 3],
[4, 5],
[6, 7]])
b = a.copy()
print(b)

# 复制不会影响原来的数组
b[0][0] = -1
print(b)
print(a)

# 填充
b.fill(6)
print(b)

# 转化
# 转化为列表
print(a.tolist())

# 转化为字符串
print(a.tostring())

# 改变数组元素类型
print(a.astype(float))

b = a.copy()
# 转换大小字节顺序
print(b.byteswap(False))
# 将它看作是16位整数
# 32位变成两个16位??
print(a.view(dtype = np.int16))

# 复数
# 实部
b = np.array([1 + 2j, 3 + 4j, 5 + 6j])
print(b.real)

# 虚部
print(b.imag)

# 共轭
print(b.conj())
print(b.conjugate())

# 保存
# 保存为文本
a.dump("./DEMO/file1.txt") # 二进制
print(a.dumps())
# 写入文件
a.tofile('./DEMO/foo.csv', sep = ',', format = "%s")

# 查找排序
# 非零元素的索引
print(a)
print(a.nonzero())

# 排序
b = np.array([3, 2, 7, 4, 1])
b.sort()
print(b)

# 排序的索引位置
b = np.array([2, 3, 1])
print(b.argsort(axis = -1))

# 将 b 插入 a 中的索引,使得 a 保持有序:
a = np.array([1, 3, 4, 6])
b = np.array([0, 2, 5])
print(a.searchsorted(b)) # 相对于a的位置

# 元素数学操作
# 限制在一定范围
a = np.array([[4, 1, 3], [2, 1, 5]])
print(a.clip(0, 2)) # 大于和小于的会更改为边界值
# 近似
a = np.array([1.344, 2.449, 2.558])
print(a.round(decimals = 2))

# 累加和
a = np.array([[4, 1, 3], [2, 1, 5]])
print(a.cumsum(axis = None)) # 第一个数, 第一加第二,第二加第三....
# 累乘积
print(a.cumprod(axis = None))# 同上

# 约简操作
# 求和
a = np.array([[4, 1, 3], [2, 1, 5]])
print(a.sum(axis = None))
# 求积
print(a.prod(axis = None))
# 最小值和索引
print(a.min(axis = None))
print(a.argmin(axis = None))

# 最大值和索引
print(a.max(axis = None))
print(a.argmax(axis = None))

print(a)
print(a.argmax(axis = -1))

# 最大间隔
print(a.ptp(axis = None))
# 均值
print(a.mean(axis = None))
# 标准差
print(a.std(axis = None))
# 方差
print(a.var(axis = None))
# 是否有非零元素
print(a.any(axis = None))
# 是否全部非零
print(a.all())
# 删除生成的文件
import os
os.remove('./DEMO/foo.csv')
os.remove('./DEMO/file1.txt')