我的目标是首先过滤掉所有的0值。在右扬升(RA)和距离(依赖红移/z)的无线电流量和相应的(相同指数)数据中,将这些阵列分成两组,无线电响亮(无线电流量> 1)和无线电安静(无线电流量<= 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)
发布于 2014-06-13 04:50:50
在发布的代码中有几个大错误:
np.where
查找原始radioflux
数组上的索引,然后使用这些索引从radiocut
中删除元素,这是radioflux
的过滤版本。事实上,您没有得到一个IndexError
,这表明这是一个转录错误,但您可能需要双重检查。distancecut
和anglecut
数组时,您不是使用包含索引的loud
和quiet
数组,而是使用保存无线流量值的radioloud
和radioquiet
。除此之外,使用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
也是如此。
https://stackoverflow.com/questions/24196725
复制相似问题