【问题标题】:How do I filter items using numpy.delete? (working for some but not others)如何使用 numpy.delete 过滤项目? (为某些人工作,但不是为其他人工作)
【发布时间】:2014-06-13 02:17:25
【问题描述】:

我的目标是首先过滤掉射电通量中的所有 0 值以及赤经 (RA) 和距离中的相应(相同索引)数据(取决于红移/z),然后将这些数组分为两组,无线电响亮(radioflux > 1)和无线电安静(radioflux

  • 无线电通量:166583
  • 电台剪辑:12464
  • 无线电响度:239
  • 无线电静音:12225
  • 距离切割:12464
  • 切角:12464
  • 距离大声:12120
  • 距离安静:12424
  • 角度响度:12120
  • 静角:12424

应该是:

  • 无线电通量:166583
  • 电台剪辑:12464
  • 无线电响度:239
  • 无线电静音:12225
  • 距离切割:12464
  • 切角:12464
  • 距离大声:239
  • 距离安静:12225
  • 角度响度:239
  • 静角:12225

我的代码片段:(之前已经定义了所有使用的变量/数组名称)

values = radioflux
searchval = 0
searchvalquietloud = 1


indices = np.where(values == searchval)[0]
radiocut = np.delete(radioflux,indices)


quiet = np.where(values <= searchvalquietloud)[0]
radioloud = np.delete(radiocut,quiet)

loud = np.where(values > searchvalquietloud)[0]
radioquiet = np.delete(radiocut,loud)

distance = np.multiply(redshift,dist)
angle = np.multiply(ra,radians)

distancecut = np.delete(distance,indices)
anglecut = np.delete(angle,indices)

distancequiet = np.delete(distancecut,radioloud)
distanceloud = np.delete(distancecut,radioquiet)

anglequiet = np.delete(anglecut,radioloud)
angleloud = np.delete(anglecut,radioquiet)

【问题讨论】:

  • 顺便说一句:如果您正在处理真实的标记数据,并且想要获取其中的一部分并计算统计数据等,那么使用 pandas 比使用裸 numpy 要好得多。跨度>
  • 这些是一维数组?虽然我从未使用过 Pandas,但我浏览了文档并同意 @DSM。

标签: python numpy indices


【解决方案1】:

发布的代码中有几个大错误:

  1. 您使用np.where 在原始radioflux 数组上查找索引,然后使用这些索引从radiocutradioflux 的过滤版本)中删除元素。您没有收到 IndexError 的事实表明这是一个转录错误,但您可能需要仔细检查。

  2. 在过滤distancecutanglecut 数组时,您没有使用保存索引的loudquiet 数组,而是保存无线电通量的radioloudradioquiet价值。

除此之外,使用 numpy 执行此操作的规范方法是使用布尔索引,看起来像这样:

cut_mask = values != searchval
radiocut = radioflux[cut_mask]
loud_mask = radiocut > searchvalquietloud
quiet_mask = ~loud_mask
radioloud = radiocut[loud_mask]
radioquiet = radiocut[quiet_mask]

然后您将其他两个数组处理为:

distancecut = distance[cut_mask]
distanceloud = distancecut[loud_mask]
distancequiet = distancecut[quiet_mask]

angle 也是如此。

【讨论】:

    猜你喜欢
    • 2012-07-14
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多