【问题标题】:Get samples from numpy array based in samples of another array根据另一个数组的样本从 numpy 数组中获取样本
【发布时间】:2021-01-20 13:11:41
【问题描述】:

我有一个矩阵a 和另一个向量b

a = np.array([[0,1,2],
              [3,4,5],
              [6,7,8]]

b = np.array([0.5,0.3,0.2])

是否有任何速记函数可以根据b 的值从a 中提取行?

例如,从a 获取样本,b >= 0.3 应该返回:

[[0,1,2],
 [3,4,5]]

我想出了什么:

a_idx = np.argwhere(b >= 0.3).flatten()
c = np.take(a, a_idx)

这可行,但我想知道是否有更好的解决方案(特别适用于大型数组)。

提前致谢。

【问题讨论】:

    标签: python arrays numpy matrix


    【解决方案1】:

    a[b >= 0.3] 更简洁,但您的方法似乎更快(在 1M 条目阵列上进行了 200 次测量测试,您的方法快了约 33%)。

    【讨论】:

    • 我不知道我能做到这一点,这太棒了。我对性能持怀疑态度,因为我首先必须获取索引,然后提取。对大型数组进行 2 次操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2020-01-16
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 2015-06-07
    相关资源
    最近更新 更多