Python 删除索引以匹配数组维度

Python 删除索引以匹配数组维度,python,arrays,pandas,numpy,astropy,Python,Arrays,Pandas,Numpy,Astropy,我有两个数组(x,y)具有不同的值,我试图为x2] 数据_dg=np.ndarray.flatten(数据_dg) 数据_dg=数据_dg[数据_mg] 数据\u mg=np.ndarray.flatten(数据\u mg) data_mg=data_mg[np.logical_not(np.isnan(data_mg))] 数据_dg=np.ndarray.flatten(数据_dg) data_dg=data_dg[np.logical_not(np.isnan(data_dg))] b=n

我有两个数组(x,y)具有不同的值,我试图为x<100的值找到y的中值。我的问题是我过滤掉了数组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\u mg=image\u data\u mg[0]。数据[0:x,0:y]。aType('float'))
data\u err=image\u data\u err[0]。数据[0:x,0:y]。aType('float'))
data_dg=image_data_dg[0]。数据[0:x,0:y]。aType('float'))
data_mg[data_mg==0]=np.nan
数据错误[数据错误==0]=np.nan
data_dg[data_dg==0]=np.nan
data\u mg=data\u mg[数据\u mg/数据错误>2]
数据_dg=np.ndarray.flatten(数据_dg)
数据_dg=数据_dg[数据_mg]
数据\u mg=np.ndarray.flatten(数据\u mg)
data_mg=data_mg[np.logical_not(np.isnan(data_mg))]
数据_dg=np.ndarray.flatten(数据_dg)
data_dg=data_dg[np.logical_not(np.isnan(data_dg))]
b=np.其中(np.数组(数据_dg>100))
中位数=np.中位数(数据[b])
打印(>100 km/s时的通量中值为'+str(中值))

a=np。其中(data_dg看起来像是
data_mg
data_dg
以相同的形状开始,您使用布尔索引来保持每个数组中不为na的值。问题是每个数组中的值都不同。我建议创建一个可用于两个数组的组合索引

data_mg = np.ndarray.flatten(data_mg)
data_dg = np.ndarray.flatten(data_dg)

ix_mg = np.logical_not(np.isnan(data_mg))
ix_dg = np.logical_not(np.isnan(data_dg))
ix_combined = np.logical_and(ix_mg, ix_dg)

data_mg = data_mg[ix_combined]
data_dg = data_dg[ix_combined]

首先,您可以对每个数组执行相同的索引操作,使它们具有相同的形状

idx=data\u mg/data\u err>2
data_mg=data_mg[idx]
数据_df=数据_dg[idx)
但您收到的错误可能不是由于此原因。您的错误似乎来自以下行:

data_dg=data_dg[data_mg]
给出错误:

IndexError: arrays used as indices must be of integer (or boolean) type, line 10

我不确定你的意图是什么,所以我不确定该推荐什么。如果你想让它们成为相同的形状,我上面包含的行应该可以为你做到这一点。

这是否使得当我从数组x中删除某些索引时,它也会从数组y中删除它们?我3个月前开始使用python,我只做过s到目前为止,elf教授过。我想我可以用艰难的方式来做np。在数组中找到符合我要求的元素的索引在哪里?或者我离“我想我可以用艰难的方式来做np。在数组中找到符合我要求的元素的索引在哪里”还远吗?我不会称之为“艰难的方式”。我会称之为“方法”。
np。其中
将为您提供数组中符合某些条件的索引,您可以使用这些相同的索引为其他数组编制索引,只要它的大小相同或更大。