gpt4 book ai didi

python - 删除索引以匹配数组维度

转载 作者:行者123 更新时间:2023-12-04 07:48:36 24 4
gpt4 key购买 nike

我有两个具有不同值的数组 (x, y),我正在尝试为 x < 100 中的值找到 y 的中位数。我的问题是我已经过滤掉了数组 x 中的一些值,因此数组的形状不同.有没有办法可以删除我在数组 x 中的数组 y 中删除的那些索引?
例如,它们都是 24, 36 但在过滤数组之后 y 是 22, 32 并且 x 仍然是 24, 36。如何删除相同的索引?假设我删除了索引 4、7 和 9、14。如何删除数组 x 中的那些完全相同的索引?
如果需要,我的代码。 data_mg 是 y,data_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_mgdata_dg从相同的形状开始,您使用 bool 索引来保留每个中不是 na 的值。问题在于每个数组中的 nan 值不同。我建议制作一个可以用于两个数组的组合索引。

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]

关于python - 删除索引以匹配数组维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67085078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com