numpy入门实战教程(进阶篇)

这篇教程深入介绍了numpy的广播法则、花哨的索引技巧,包括数组、布尔数组、IX()函数和字符串索引。此外,还探讨了线性代数操作,如矩阵运算和数组索引,并分享了一些实用的numpy操作技巧,如自动改变形状和向量组合。最后,提到了直方图的计算方法。参考材料包含了详细的numpy手册和教程链接。
摘要由CSDN通过智能技术生成
Abstract:numpy入门实战教程进阶篇,附代码。


1.广播法则(BROADCAST RULE)

广播法则能使通用函数有意义地处理不具有相同形状的输入

  • 第一法则:若所有的输入数组维度不都相同,一个“1”将被重复地添加在维度较小的数组上直至所有数据都拥有相同的维度

  • 第二法则:确定长度为1的数组沿着特殊方向表现地好像它有沿着那个方向最大形状的大小。对数组来说,沿着那个维度的数组元素的值理应相同

应用广播法则后,所有数组的大小必须匹配

2.花哨的索引和索引技巧

numpy比普通的python序列提供更多的索引功能。数组的索引功能:索引整数、切片、被整数数组和布尔数组索引。

2.1 通过数组索引(INDEXED BY ARRAY)

  # indexed via array
  a = arange(12)**2
  print a
  i = array([1,1,3,8,5]) 
  print i
  print a[i] #  # the elements of a at the positions i
  
  j = array([[3,4],[9,7]])
  print a[j]
  
  # 当被索引数组a是多维的时,每一个唯一的索引数列指向a的第一维5。
  # 以下示例通过将图片标签用调色版转换成色彩图像展示了这种行为
  palette = array([
      [0,0,0],
      [255,0,0],
      [0,255,0],
      [0,0,255],
      [255,0,255],
      [255,255,255]])
  image = array([[0,1,2,0],
      [0,3,4,0]])
  print palette[image]
  
  # 我们也可以给出不不止一维的索引,每一维的索引数组必须有相同的形状
  a = arange(12).reshape(3,4)
  print a 
  i = array([
      [0,1],
      [1,2]])
  j = array([[2,1],[3,3]])
  print a[i,j]
  print a[i,2]
  print a[:,j]
  print a[i,:]
  l = [i,j]
  print a[l]  # 与 a[i,j] 相等
  
  # 搜索时间序列最大值6
  time = linspace(20, 145, 5)                 # time scale
  data = sin(arange(20)).reshape(5,4)         # 4 time-dependent series
  print time
  print data
  
  ind = data.argmax(axis=0)   # index of the maxima for each series
  print ind 
  
  time_max = time[ind]
  data_max = data[ind, range(data.shape[1])]
  print time_max
  print data_max
  print all(data_max == data.max(axis=0)) # True
  a = arange(5)
  print a 
  # 当一个索引列表包含重复时,赋值被多次完成,保留最后的值
  a = arange(5)
  a[[0,0,2]] = [1,2,3]
  print a 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值