2

我正在尝试将 1D 数组元素与 2D 数组进行比较,并返回 2D 数组的元素,它在不使用 for 循环的情况下以 2D 数组形式满足条件。最好使用 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]],但它只给了我一个一维数组,而不是一个二维数组。

4

1 回答 1

2

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

尝试以下操作:

mask = sum_Ta < (percent * np.ones((250,1)))
ES = np.zeros((250, 1000))
ES[mask] = sum_Ta[mask]
于 2018-02-26T22:53:24.487 回答