跳至主要內容

Python

LincZero大约 1 分钟

Python

目录

NumPy库

简概

可以计算向量、计算矩阵

机器学习环境常用

常用功能

注意要区分向量和矩阵的定义

数据定义

向量

定义向量(一对中括号)

w = np.array([1.0, 2.5, -3.3])	# 访问方法:w[i]
b = 4
x = np.array([10, 20, 30])		# 访问方法:x[i]

# 向量也可以看成是列矩阵
np.array([10, 20, 30]) 和 np.array([[10], [20], [30]]) 基本是一样的

numpy向量的注释

向量转置前后打印出来是一样的。

由于python numpy的广播特性(行向量+列向量不会报错,会变成一个矩阵),使用向量很容易出错

import numpy as np
a = np.random.randn(5)		
a							# [0.50, -0.29, 0.95, -0.82, -1.46]
a.T							# [0.50, -0.29, 0.95, -0.82, -1.46]

解决方法:

a = np.random.randn(5)		# 不要使用,有jj歧义
b = np.random.randn(5,1)	# 竖向量,a.shape -> (5,1)
c = np.random.randn(1,5)	# 行向量,a.shape -> (1,5)

# 打印出来也不同
b
"""
[[ 0.50]
 [-0.29]
 [ 0.95]
 [-0.82]
 [-1.46]]
"""
b.T
"""
[[ 0.50  -0.29  0.95  -0.82  -1.46]]
"""

矩阵

定义矩阵1(两对中括号)

x = np.array([		# 这是一个矩阵
    [200.0, 17.0],
    [425.0, 18.5]
])

x  = np.array([		# 这是一个4x2矩阵,即四行两列矩阵
    [0.1, 0.2],
    [0.2, 0.3],
    [0.3, 0.4],
    [0.4, 0.5],
])

# 一般不用矩阵的定义方式来定义向量,写起来会非常麻烦,而是直接定义向量,然后当矩阵用

定义矩阵2

np.matrix()		# ...

方法

向量点乘

f = np.dot(w,x)+b				# 向量化的一个好处是快,对于大数据还可以多线程并行工作,而不是单线程循环

矩阵乘(叉乘)

Z = np.matmul(A_in,W) + B