gpt4 book ai didi

python - 在 numpy 中给定索引列表添加元素的最有效方法

转载 作者:行者123 更新时间:2023-12-03 18:33:28 24 4
gpt4 key购买 nike

假设我们有一个形状为 (N, ) 的 numpy 数组 A 和一个形状为 (M, 3) 的矩阵 D,其中包含数据和另一个形状为 (M, 3) 的矩阵 I,它具有 D 中每个数据元素的对应索引。我们可以构造 A 给定的 D 和 I 以便添加重复的元素索引吗?
例子:

############# A[I] := D ###################################  
A = [0.5, 0.6] # Final Reduced Data Vector
D = [[0.1, 0.1 0.2], [0.2, 0.4, 0.1]] # Data
I = [[0, 1, 0], [0, 1, 1]] # Indices
例如:
A[0] = D[0][0] + D[0][2] + D[1][0]     # 0.5 = 0.1 + 0.2 + 0.2
由于在索引矩阵中我们有:
I[0][0] = I[0][2] = I[1][0] = 0
目标是避免循环遍历所有元素以对大 N、M (10^6-10^9) 有效。

最佳答案

我怀疑你能不能比 np.bincount 快得多- 并注意 official documentation提供了这个确切的用例

# Your example
A = [0.5, 0.6]
D = [[0.1, 0.1, 0.2], [0.2, 0.4, 0.1]]
I = [[0, 1, 0], [0, 1, 1]]

# Solution
import numpy as np
D, I = np.array(D).flatten(), np.array(I).flatten()
print(np.bincount(I, D)) #[0.5 0.6]

关于python - 在 numpy 中给定索引列表添加元素的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65103114/

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