将 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]
我有两个向量,分别称为 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]