【发布时间】:2016-09-12 01:43:54
【问题描述】:
假设我有两个数组:
import numpy as np
a = np.random.randint(0,10,10)
b = np.random.randint(0,10,10)
我想生成另一个长度为 10 的数组,其第 i 个条目是从集合中抽取的随机整数({0...9} 减去元素 a[i] 和 b[i])。
作为 NumPy 的新手,我认为最简单的方法可能是:
- 获取每个
i的设置差异x = {0...9} - (a[i] union b[i]) - 为每个
i做np.random.choice(x[i], 1)
但我发现这有点棘手,因为我不知道如何将 setdiff1d 元素映射到 2 个数组。在 NumPy 中是否有一种明显的方法可以做到这一点(即理想情况下不必求助于 Python 集等)?
【问题讨论】:
-
import random random.sample(set(range(0, 10)).difference([a[i], b[i]]), 1)[0]