我有两个成对的数组,这意味着两个数组中的元素1需要具有相同的索引。我要置换这些元素。目前,我尝试了np.random.permutation,但这似乎没有得到正确的答案。
例如,如果两个数组分别为[1,2,3]和[4,5,6],则可能的排列方式为[4,2,3]和[1,5,6]。
答案 0 :(得分:1)
您可以stack
数组,并使用choice
为每一行选择一个随机列。
设置
a = np.array([1,2,3])
b = np.array([4,5,6])
v = np.column_stack((a,b))
# array([[1, 4],
# [2, 5],
# [3, 6]])
np.random.seed(1)
choices = np.random.choice(v.shape[1], v.shape[0])
# array([1, 1, 0])
最后,要建立索引:
v[np.arange(v.shape[0]), choices]
array([4, 5, 3])
答案 1 :(得分:0)
const SortableList = SortableContainer(({ items }) => {
return (
<ul>
{items.map((value, index) => (
<div onClick={this.someEventHandler}>
<SortableItem key={`item-${index}`} index={index} value={value} />
</div>
))}
</ul>
);
});
运行上面的代码1:
a=np.array([1, 2, 3])
b=np.array([4, 5, 6])
random_arr=np.random.choice([0, 1], size=(len(a),)) # Generate a random array of 0s and 1s, let's say arr([0,0,1])
a1=random_arr*a + (1-random_arr)*b # arr([0,0,1])*arr([1,2,3]) + arr([1,1,0])*arr([4,5,6]) = arr([4, 5, 3])
b1=random_arr*b + (1-random_arr)*a # arr([0,0,1])*arr([4,5,6]) + arr([1,1,0])*arr([1,2,3]) = arr([1, 2, 6])
a=a1
b=b1
运行2:
a
Out[188]: array([4, 2, 6])
b
Out[189]: array([1, 5, 3])
答案 2 :(得分:0)
您可以使用sudo su
export AIRFLOW_HOME=/etc/airflow
export SLUGIFY_USES_TEXT_UNIDECODE=yes
pip install apache-airflow
:
np.choose