我有两个具有不同值的数组(x,y),我正在尝试为x<;100我的问题是我过滤掉了数组x中的一些值,因此数组的形状不同。是否有一种方法可以删除我在数组x中的数组y中删除的索引
例如,它们都是24,36,但在过滤阵列之后,y是22,32,x仍然是24,36。如何删除相同的索引?假设我删除了索引4、7和9、14。如何删除阵列x中完全相同的那些
我的代码,如果需要的话。数据_mg为y,数据_dg为x
data_mg = image_data_mg[0].data[0:x, 0:y].astype('float')
data_err = image_data_err[0].data[0:x, 0:y].astype('float')
data_dg = image_data_dg[0].data[0:x, 0:y].astype('float')
data_mg[data_mg == 0] = np.nan
data_err[data_err == 0] = np.nan
data_dg[data_dg == 0] = np.nan
data_mg = data_mg[data_mg/data_err > 2]
data_dg = np.ndarray.flatten(data_dg)
data_dg = data_dg[data_mg]
data_mg = np.ndarray.flatten(data_mg)
data_mg = data_mg[np.logical_not(np.isnan(data_mg))]
data_dg = np.ndarray.flatten(data_dg)
data_dg = data_dg[np.logical_not(np.isnan(data_dg))]
b = np.where(np.array(data_dg > 100))
median = np.median(data_mg[b])
print('Flux median at dispersion > 100 km/s is ' + str(median))
a = np.where(data_dg <= 100)
median1 = np.median(data_mg[a])
print('Flux median at dispersion <= 100 km/s is ' + str(median1))
IndexError: arrays used as indices must be of integer (or boolean) type, line 10
首先,可以对每个数组执行相同的索引操作,使它们具有相同的形状。我相信会是这样的:
但是你所得到的错误可能不是因为这个。看起来您的错误来自以下行:
给出错误:
我不知道你的意图是什么,所以我不知道该推荐什么。如果这是你试图让他们成为相同的形状,我上面包括的线应该为你做到这一点
看起来
data_mg
和data_dg
以相同的形状开始,并且使用布尔索引来保持每个形状中不为na的值。问题是每个数组中的值不同。我建议创建一个可以用于两个数组的组合索引相关问题 更多 >
编程相关推荐