二维数组与一维数组比较 returns 二维数组

2d array compare to 1d array returns 2d array

我正在尝试按元素比较一维数组与二维数组,并且 returns 二维数组的元素在不使用 for 循环的情况下以二维数组形式满足条件。最好使用 numpy 或更快的方法。

a = range(1,10)
Tna = np.random.choice(a, size=[250,10,1000], replace=True)
sum_Ta = np.sum(Tna, axis = 1)
percent = np.percentile(sum_Ta, 5, axis =0)

现在我想得到一个二维数组,其中包含 sum_Ta 的元素(如果元素小于百分比)。这样 sum_Ta 的 250 个元素与百分比的 1 个元素进行 1000 次比较。本来我可以做的,ES = sum_Ta[sum_Ta < percent[:,None]],但它只给我一个一维数组,而不是二维数组。

假设您的意思是对于每一行,如果该行的元素小于与其列相关联的百分比,您希望包括该行的元素。

尝试以下操作:

mask = sum_Ta < (percent * np.ones((250,1)))
ES = np.zeros((250, 1000))
ES[mask] = sum_Ta[mask]