本帖最后由 opencv键盘侠 于 2018-9-6 10:40 编辑
Jupyter notebook学习Numpy 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)
复制代码
|