将 Nan 插入向量中的特定位置

Insert Nan into specific positions in a vector

我有两个向量,分别称为 A 和 B:A 是一个数字列表,B 是一个表示 A 的数字排列顺序的列表。

我想创建一个矢量C,其中矢量A的数字根据矢量B中布置的位置排列。

A​​ 中的数字没有涵盖 B 中所有可能位置的范围,因此我需要创建一个带有 NaN 或 [] 的向量 C 来表示缺少的 A 值。最快的方法是什么?

参见下面的示例:

A = [5, 10, 55, 3, 10]
B = [1, 3, 4, 6, 9]
C = [5, nan, 10, 55, nan, 3, nan, nan, 10]

感谢您的帮助!

使用 numpy 并避免“for”的简短回答

import numpy as np

A = np.array([5, 10, 55, 3, 10])
B = np.array([1, 3, 4, 6, 9])
#C = [5, nan, 10, 55, nan, 3, nan, nan, 10]

c = np.ones(B[-1])*np.NaN #create array of nans with desired length
c[B-1] = A #assing values (remember indices in python starts at 0)

print(c)
#[ 5. nan 10. 55. nan  3. nan nan 10.]

尝试

C = [A[B.index(i)] if i in B else nan for i in range(max(B) + 1)]
# [nan, 5, nan, 10, 55, nan, 3, nan, nan, 10]

或者如果你真的想跳过索引 0:

C = [A[B.index(i)] if i in B else nan for i in range(1, max(B) + 1)]
# [5, nan, 10, 55, nan, 3, nan, nan, 10]