0%

Numpy 使用

1
2
3
4
5
6
7
8
# 导入 numpy
import numpy as np

# 矩阵运算

np.linalg.inv() # 矩阵求逆

np.linalg.det() # 矩阵求行列式(标量)
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
# dot()返回的是两个数组的点积(dot product)
np.dot() # 点积

# 1.如果处理的是一维数组,则得到的是两数组的內积
d = np.arange(0,9) # array([0, 1, 2, 3, 4, 5, 6, 7, 8])
e = d[::-1] # array([8, 7, 6, 5, 4, 3, 2, 1, 0])

np.dot(d,e) # 84

# 2.如果是二维数组(矩阵)之间的运算,则得到的是矩阵积(mastrix product)
a = np.arange(1,5).reshape(2,2) # array([[1, 2],
# [3, 4]])
b = np.arange(5,9).reshape(2,2) # array([[5, 6],
# [7, 8]])

np.dot(a,b) # array([[19, 22],
# [43, 50]])




numpy.random.randint(low, high=None, size=None, dtype='l')

返回一个随机整型数,范围从低(包括)到高(不包括),即[low, high)
默认high是None,如果只有low,那范围就是[0,low)。如果有high,范围就是[low,high)
PS: 在 Python 中,区间多是 左闭右开

np.random.randint(2, size=10)
# array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0])

np.random.randint(1, size=10)
# array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

np.random.randint(5, size=(2, 4))
# array([[4, 0, 2, 1],
# [3, 2, 2, 0]])


numpy.random.choice(a, size=None, replace=True, p=None)
从一维数组a中随机抽取,并组成指定大小(size)的数组(抽size次),
replace:True 表示可以取相同数字,False 表示不可以取相同数字
p(概率数组): 数组a 中每个元素被抽中的概率 (数组大小应与a相同), 默认抽每个元素的概率相同

np.random.choice(5) #从[0, 5)中随机输出一个随机数
#相当于np.random.randint(0, 5)

np.random.choice(np.arange(5), size=5, replace=True, p=[0.5, 0.1, 0.1, 0.2, 0.1])




np.random.rand()
通过本函数可以返回一个或一组服从 "0~1" 均匀分布的随机样本值。随机样本取值范围是[0,1)


numpy.argmax(array, axis)
用于返回一个numpy数组中最大值的索引值。当一组中同时出现几个最大值时,返回第一个最大值的索引值
也可用于多维数组
# 参考: https://blog.csdn.net/weixin_42755982/article/details/104542538

one_dim_array = np.array([1, 4, 5, 3, 7, 2, 6])
print(np.argmax(one_dim_array)) # 4
1
np.exp(x)  # e^x e的x次方   e = 2.71828182846
np.linspace()

0 到 2 * pi 中间插入50个点

np.linspace(0, 2 * np.pi, 50)

创建数组

np.zeros()

根据指定的 形状 和 数据类型 生成全为 0 的数组

np.zeros(shape, dtype = None)

shape 可以是 list,元组

1
2
# 创建2行3列 矩阵, 全0元素
np.zeros([2,3], dtype = int)

np.ones()

根据指定的 形状 和 数据类型 生成全为 1 的数组

np.ones(shape, dtype = None)

np.identity()

创建单位矩阵(即对角线元素为 1,其余元素为 0 的矩阵)

np.identity(n, dtype = None)

n: 数组形状, 一个数值,单位矩阵一定是方阵

数组索引访问

一维数组 索引访问

一维数组索引访问 与 Python 内置序列类型索引访问一致

ndarray[index]

注意:负索引 逆序从 -1 开始

二维数组 索引访问

ndarray[所在0轴索引][所在1轴索引]
ndarray[所在0轴索引, 所在1轴索引]

0轴 索引 决定 在哪行
1轴 索引 决定 在哪列

数组转置

使用 数组对象的属性 T,对数组进行转置(行变列,列变行)

ndarray.T

一维数组切片访问

一维数组切片访问 与 Python 内置序列类型 切片访问 一致

ndarray[start:end]

ndarray[start:end:step]

注意: 切片 包括 start, 不包括 end,左闭右开 区间

reshape 常见用法

  • reshape(1,-1) 转化成1行:

  • reshape(2,-1) 转换成两行:

  • reshape(-1,1) 转换成1列:

  • reshape(-1,2) 转化成两列

参考:

感谢帮助!