我的目标是首先滤除无线电通量中的所有0值和右上升(RA)和距离(依赖于红移/ z)中的相应(相同指数)数据,然后将这些数组分成两组,无线电广播(radioflux> 1)和无线电安静(radioflux< = 1)。代码工作正常,直到我尝试从RA和距离数组中删除无线电静音类星体索引以获得剩余的无线电响亮的声音,反之亦然,以获得无线电安静的。这些是我在检查数组中有多少值时得到的值:
应该是:
我的代码片段:(以前已经定义了所有使用过的变量/数组名称)
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)
答案 0 :(得分:2)
发布的代码中有几个大错:
使用np.where
查找原始radioflux
数组的索引,然后使用这些索引从radiocut
中删除元素,radioflux
是{{1}的过滤版本}}。事实上你没有得到IndexError
指出这是一个转录错误,但你可能想要仔细检查。
过滤distancecut
和anglecut
数组时,您没有使用包含索引的loud
和quiet
数组,但{{1} }和radioloud
,它们保存无线电通量值。
除此之外,使用numpy执行此操作的规范方法是使用布尔索引,并且看起来像这样:
radioquiet
然后您将处理其他两个数组:
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]
。