易学智能

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2360|回复: 3

Jupyter notebook接力赛(7)Jupyter notebook学习Numpy

[复制链接]

4

主题

31

帖子

86

积分

注册会员

Rank: 2

积分
86
发表于 2018-9-5 18:32:21 | 显示全部楼层 |阅读模式
本帖最后由 opencv键盘侠 于 2018-9-6 10:40 编辑

Jupyter notebook学习Numpy
Numpy库(以下运行结果均在#注释后)
pyhton提供了高性能的多维数组对象,以及用于处理这些阵列的工具,
1.1 矩阵(Arrays
   创建矩阵
  1. #创建一个3行1列的矩阵
  2. a = np.array([1, 2, 3])
  3. #输出矩阵的维度,结果为(3,)
  4. print(a.shape)
  5. #选择矩阵的对应元素,在此处就是第一维度,第二维度,第三维度
  6. print(a[0], a[1], a[2])
  7. #创建一个2行3列的矩阵
  8. b = np.array([[1,2,3],[4,5,6]])
  9. #输出对应元素
  10. print(b[0, 0], b[0, 1], b[1, 0])
  11. #创建一个2*2的0矩阵,即元素全部为0
  12. a = np.zeros((2,2))
  13. #创建一个全部元素为1的矩阵
  14. b = np.ones((1,2))
  15. #创建一个元素全部为n的2*2矩阵
  16. c = np.full((2,2), n)
  17. #创建一个随机矩阵,即其中的元素值全部#为随机数
  18. e = np.random.random((2,2))
复制代码
1.png
1.2 矩阵索引(Array indexing)
Numpy提供了几种索引到数组的方法
  1. import numpy
  2. #获取a矩阵的前两行,1到3列的数据
  3. a = np.array([[1,2], [3, 4], [5, 6]])
  4. b = a[:2, 1:3]
  5. #将0行0列置为77
  6. b[0, 0] = 77
  7. #将a的第1行赋给row_r1
  8. row_r1 = a[1, :]
  9. #依然是将a的第1行赋给row_r2,但是不同的是,同样是1行但此时row_r2有两个维度
  10. row_r2 = a[1:2, :]
  11. print(row_r1, row_r1.shape) # Prints "[5 6 7 8] (4,)"
  12. print(row_r2, row_r2.shape) # Prints "[[5 6 7 8]] (1, 4)"
  13. #注意此时a虽然是两行三列的矩阵,但它其实是个3维矩阵,他只是三个维度中的一个
  14. print(a[0])#Prints "[[1,2], [3, 4], [5, 6]]"
  15. print(np.array([a[0, 0], a[1, 1], a[2, 0]])) # Prints "[1 4 5]"
  16. b = np.array([0,1,1])
  17. print(np.arange(2))
  18. #将b当做索引,从a中取出对应值
  19. print(a[np.arange(3), b]) # Prints "[ 1 6 7 11]"Prints[1,4,6]
复制代码
2.png

一些布尔变量在矩阵中的用法
  1. a = np.array([[1,2], [3, 4], [5, 6]])
  2. bool_idx = (a > 2)
  3. print(bool_idx) # Prints "[[False False]
  4. # [ True True]
  5. # [ True True]]"
  6. print(a[bool_idx]) # Prints "[3 4 5 6]"
复制代码


3.png

1.3矩阵中的数学操作(Array math)
  在矩阵数组中的一些数学操作
  1. x = np.array([[1,2],[3,4]])
  2. y = np.array([[5,6],[7,8]])
  3. v = np.array([9,10])
  4. #对应相乘做和,1*9+2*10=29
  5. print(np.dot(x, v)) #print"[29 67]"
  6. #对应直接做和,axis=0时代表行,axis=1时对应列
  7. print(np.sum(x)) #  prints "10"
  8. print(np.sum(x, axis=0)) #  prints "[4 6]"
  9. print(np.sum(x, axis=1)) #  prints "[3 7]"

  10. x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
  11. v = np.array([1, 0, 1])
  12. y = np.empty_like(x) # 生成一个维度完全和矩阵x相同的空矩阵
  13. for i in range(4):
  14. y[i, :] = x[i, :] + v
复制代码

4.png
  1. #下面这些算法都是按照对应维度去进行计算的,因此要求必须两个运算矩阵的维度必须完全相同I
  2. mport numpy as np
  3. x = np.array([[1,2],[3,4]], dtype=np.float64)
  4. y = np.array([[5,6],[7,8]], dtype=np.float64)
  5. #加法
  6. print(x + y)
  7. print(np.add(x, y))
  8. #减法
  9. print(x - y)
  10. print(np.subtract(x, y))
  11. #乘法
  12. print(x * y)
  13. #除法
  14. print(np.multiply(x, y))
  15. print(x / y)
  16. print(np.divide(x, y))
  17. #开方
  18. print(np.sqrt(x))
复制代码

5.png

1.4 重构矩阵(reshape
改变矩阵的维度
  1. v = np.array([1,2,3]) # v has shape (3,)
  2. w = np.array([4,5]) # w has shape (2,)
  3. #将v矩阵重置为3行1列的矩阵()原本为1行3列)然后与w矩阵相乘
  4. print(np.reshape(v, (3, 1)) * w)
复制代码

6.png


回复

使用道具 举报

44

主题

139

帖子

382

积分

论坛管理

Rank: 4

积分
382
发表于 2018-9-26 16:30:17 | 显示全部楼层
numpy中的矩阵操作挺全的,但是缺少一些如统计函数和三角函数这一块的东西
回复

使用道具 举报

3

主题

55

帖子

131

积分

注册会员

Rank: 2

积分
131
发表于 2018-10-8 08:26:34 | 显示全部楼层
对于机器学习来说numpy是基础中的基础哦
回复

使用道具 举报

7

主题

28

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2018-10-8 08:29:39 | 显示全部楼层
感谢大佬的教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|易学智能

GMT+8, 2024-12-22 13:31 , Processed in 0.034534 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表