我尝试在一个列表中重复某些元素n
次,到目前为止,我得到了这个解决方案:
_base = ["a", "z", "c", "c", "e"]
for bump_element in ["a", "b", "c"]:
_base = np.repeat(
np.array(_base),
np.where(np.array(_base) == bump_element, 2, 1)
)
到目前为止,_base
应该是['a' 'a' 'z' 'c' 'c' 'c' 'c' 'e']
。但是,我试图通过删除for循环来使它更快,以便在一个repeat
中可以捕获所有元素。类似于:
_base = np.repeat(
np.array(_base),
np.where(np.array(_base) in ["a", "b", "c"], 2, 1)
)
但这是行不通的,因为它会抛出The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
。
有没有简单的方法让where
子句检查列表中的每一项,并将其与包含要重复的元素的项进行比较?
1条答案
按热度按时间to94eoyn1#
要避免for循环遍历'bump_element'中的可能值,可以使用numpy isin。