Numpy库(以下运行结果均在#注释后)
为pyhton提供了高性能的多维数组对象,以及用于处理这些阵列的工具,
1.1 矩阵(Arrays)
创建矩阵
#创建一个3行1列的矩阵
a = np.array([1, 2, 3])
#输出矩阵的维度,结果为(3,)
print(a.shape)
#选择矩阵的对应元素,在此处就是第一维度,第二维度,第三维度
print(a[0], a[1], a[2])
#创建一个2行3列的矩阵
b = np.array([[1,2,3],[4,5,6]])
#输出对应元素
print(b[0, 0], b[0, 1], b[1, 0])
#创建一个2*2的0矩阵,即元素全部为0
a = np.zeros((2,2))
#创建一个全部元素为1的矩阵
b = np.ones((1,2))
#创建一个元素全部为n的2*2矩阵
c = np.full((2,2), n)
#创建一个随机矩阵,即其中的元素值全部#为随机数
e = np.random.random((2,2))
1.2 矩阵索引(Array indexing)
Numpy提供了几种索引到数组的方法
import numpy
#获取a矩阵的前两行,1到3列的数据
a = np.array([[1,2], [3, 4], [5, 6]])
b = a[:2, 1:3]
#将0行0列置为77
b[0, 0] = 77
#将a的第1行赋给row_r1
row_r1 = a[1, :]
#依然是将a的第1行赋给row_r2,但是不同的是,同样是1行但此时row_r2有两个维度
row_r2 = a[1:2, :]
print(row_r1, row_r1.shape) # Prints "[5 6 7 8] (4,)"
print(row_r2, row_r2.shape) # Prints "[[5 6 7 8]] (1, 4)"
#注意此时a虽然是两行三列的矩阵,但它其实是个3维矩阵,他只是三个维度中的一个
print(a[0])#Prints "[[1,2], [3, 4], [5, 6]]"
print(np.array([a[0, 0], a[1, 1], a[2, 0]])) # Prints "[1 4 5]"
b = np.array([0,1,1])
print(np.arange(2))
#将b当做索引,从a中取出对应值
print(a[np.arange(3), b]) # Prints "[ 1 6 7 11]"Prints[1,4,6]
一些布尔变量在矩阵中的用法
a = np.array([[1,2], [3, 4], [5, 6]])
bool_idx = (a > 2)
print(bool_idx) # Prints "[[False False]
# [ True True]
# [ True True]]"
print(a[bool_idx]) # Prints "[3 4 5 6]"
1.3矩阵中的数学操作(Array math)
在矩阵数组中的一些数学操作
x = np.array([[1,2],[3,4]])
y = np.array([[5,6],[7,8]])
v = np.array([9,10])
#对应相乘做和,1*9+2*10=29
print(np.dot(x, v)) #print"[29 67]"
#对应直接做和,axis=0时代表行,axis=1时对应列
print(np.sum(x)) # prints "10"
print(np.sum(x, axis=0)) # prints "[4 6]"
print(np.sum(x, axis=1)) # prints "[3 7]"
x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
v = np.array([1, 0, 1])
y = np.empty_like(x) # 生成一个维度完全和矩阵x相同的空矩阵
for i in range(4):
y[i, :] = x[i, :] + v
#下面这些算法都是按照对应维度去进行计算的,因此要求必须两个运算矩阵的维度必须完全相同I
mport numpy as np
x = np.array([[1,2],[3,4]], dtype=np.float64)
y = np.array([[5,6],[7,8]], dtype=np.float64)
#加法
print(x + y)
print(np.add(x, y))
#减法
print(x - y)
print(np.subtract(x, y))
#乘法
print(x * y)
#除法
print(np.multiply(x, y))
print(x / y)
print(np.divide(x, y))
#开方
print(np.sqrt(x))
1.4 重构矩阵(reshape)
改变矩阵的维度
v = np.array([1,2,3]) # v has shape (3,)
w = np.array([4,5]) # w has shape (2,)
#将v矩阵重置为3行1列的矩阵()原本为1行3列)然后与w矩阵相乘
print(np.reshape(v, (3, 1)) * w)