numpy03:numpy广播机制,花式索引取值,统计方法,数组的拆分与合并,线性 ...

打印 上一主题 下一主题

主题 1015|帖子 1015|积分 3045

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
numpy广播机制

  1. import numpy as np
  2. arr1 = np.arange(24).reshape(4, 6)
  3. print(arr1)
  4. print(arr1 + 2)  # 数组中的每一个元素都会进行运算
  5. arr2 = np.arange(100,124).reshape(4,6)
  6. print(arr2)
  7. # 两个数组相加  --》形状相同,数组索引对应的元素会进行相加
  8. print(arr1 + arr2)
  9. # 一维数组  --》形状不同,行也不同,列相同
  10. arr3 = np.arange(0,6)
  11. print(arr3)
  12. print(arr2-arr3)
  13. # 行相同,列不同
  14. arr4 = np.arange(0,4).reshape(4,1)
  15. print(arr4)
  16. print(arr2-arr4)
  17. # 当两个数组行或者列不相同的时候(必须要有一个相同),就会出现广播机制运算
  18. # 进行拆分,如果是行相同,就逐行运算,如果是列相同,就逐列运算
复制代码
花式索引取值

  1. import numpy as np
  2. # 一维数组
  3. arr1 = np.random.random(12)
  4. print(arr1)
  5. # 目标是一维数组,索引的结果就是对应的元素
  6. index1 = np.array([0, 7, 9])
  7. print(arr1[index1])
  8. # 二维数组
  9. index2 = np.array([[2,4,6],
  10.           [7,9,0]],dtype=np.int32)
  11. print(index2)
  12. print(arr1[index2])
  13. # 根据index2中的每一个元素,去获取到arr1中的相应的数据,但是不改变维度(2行3列的二维数组)
复制代码
统计方法

  1. import numpy as np
  2. # 3行4列的二维数组
  3. arr1 = np.arange(11,23).reshape(3,4)
  4. print(arr1)
  5. # 最大值
  6. print(arr1.max())  # 方法1:直接对象点上方法
  7. print(np.max(arr1))  # 方法2:numpy点上方法,里面传入数组对象
  8. # 最小值
  9. print(arr1.min())
  10. print(arr1[1].max())  # 针对第二行提取最大值
  11. print(arr1[1].min())  # 针对第二行提取最小值
  12. print(arr1[:, 0].max())  # 针对第一列提取最大值
  13. print(arr1[:, 0].min())  # 针对第一列提取最小值
  14. # 最大值索引   ,索引值是降维以后的索引值
  15. print(arr1.argmax())
  16. # 最小值索引
  17. print(arr1.argmin())
  18. # 计算总和,默认针对所有元素进行求和运算
  19. print(arr1.sum())
  20. print(arr1.sum(axis=1))  # 行求和
  21. print(arr1.sum(axis=0))  # 列求和
  22. # 计算第2列的总和
  23. print(arr1[:,1].sum())
  24. # 平均值:将所有元素加起来,除以元素个数
  25. print(arr1.mean())
  26. print(arr1.mean(axis=1))  # 行平均值
  27. print(arr1.mean(axis=0))  # 列平均值
  28. # 累加的和
  29. print(arr1.cumsum())
  30. # 累乘的和
  31. print(arr1.cumprod())
  32. """
  33. 方差
  34.     统计的方法是 每个样本值 与 全体样本值 的平均数之差 的平方值的平均值
  35.     mean((x-x.mean())**2)
  36. """
  37. print(np.var([1, 2, 3, 4]))  # mean = 2.5
  38. # (1-2.5)**2  (2-2.5)**2
  39. """标准差
  40.     是方差的一个算数平方根
  41.     std = sqrt(mean((x-x.mean())**2)
  42. """
  43. print(np.std([1,2,3,4]))
  44. print(np.sqrt(np.var([1,2,3,4])))
复制代码
数组的拆分与合并

  1. import numpy as np
  2. arr1 = np.random.randint(0, 10, (3, 12))
  3. print(arr1)
  4. # 拆分
  5. # hsplit()  垂直拆分 ↓
  6. print(np.hsplit(arr1, 4))  # 垂直拆分成3个平均的数组
  7. a1, a2, a3, a4 = np.hsplit(arr1, 4)
  8. print(a1)
  9. # 指定拆分
  10. print(np.hsplit(arr1, (3, 4)))  # 在指定的索引位置进行拆分
  11. # vsplit()  水平拆分  ->
  12. arr2 = np.random.randint(0, 10, (6, 3))
  13. print(arr2)
  14. # 水平拆分,切分成两个平均的二维数组
  15. print(np.vsplit(arr2, 2))
  16. # 数组合并
  17. # hstack  水平合并
  18. # vstack  垂直合并
  19. arr3 = np.random.randint(0, 10, (2, 2))
  20. arr4 = np.random.randint(0, 10, (2, 2))
  21. print(arr3)
  22. print(arr4)
  23. # 水平合并成两行四列的二维数组
  24. print(np.hstack(tup=(arr3, arr4)))
  25. # 垂直合并成一个4行2列的二维数组
  26. print(np.vstack(tup=(arr3, arr4)))
复制代码
线性代数方法

  1. import numpy as np
  2. # 创建两个二维数组
  3. arr1 = np.array([[1, 2], [3, 4]])
  4. arr2 = np.array([[11, 12], [13, 14]])
  5. print(arr1)
  6. print(arr2)
  7. )
  8. # 数组的点积运算 np.dot
  9. print(np.dot(arr1, arr2))
  10. """
  11. 将arr1的每一行与arr2的每一列进行对应元素的相乘,且相加
  12. 1*11+2*13 = 37
  13. 1*12 +2*14 = 40
  14. 3*11+4*13 = 85
  15. 3*12+4*14 = 92
  16. """
  17. # 向量的点积运算 np.vdot
  18. print(np.vdot(arr1, arr2))
  19. """
  20. 将数组展开成一维数组,进行索引元素内积,且相加
  21. 1*11+2*12+3*13+4*14 = 130
  22. """
  23. # 数组元素内积  np.inner
  24. a = np.array([1, 2, 3])
  25. b = np.array([0, 1, 0])
  26. print(np.inner(a, b))  # 1*0+2*1+3*0  = 2
  27. # 二维元素
  28. arr1 = np.array([[1, 2], [3, 4]])
  29. arr2 = np.array([[11, 12], [13, 14]])
  30. print(np.inner(arr1, arr2))
  31. """
  32. 数组对应元素的内积
  33. 1*11+2*12 = 35
  34. 1*13 +2*14 = 41
  35. 3*11+4*12 = 81
  36. 3*13+4*14 = 95
  37. """
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

飞不高

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表