gpt4 book ai didi

python - 矢量生成的 numpy 列,其中包含条件下的值

转载 作者:行者123 更新时间:2023-12-01 00:06:36 25 4
gpt4 key购买 nike

假设我生成了一个像这样的 numpy 数组:

np.random.seed(1)
arr = np.random.randint(10,size=(5,2))

产生以下结果:

array([[5, 8],
[9, 5],
[0, 0],
[1, 7],
[6, 9]])

我该怎么办:

  • 随机添加一个新列及其自己的范围,确保其值不与其他列中的任何值匹配?例如。简单地附加另一个数组是行不通的,因为它不能保证有重复的值。

以下内容是非法的,因为正如我们在第一行中看到的,第三列是 8,而第二列也是 8:

np.append(arr, np.random.randint(10,size=(5,1)), axis=1)

array([[5, 8, 8],
[9, 5, 8],
[0, 0, 6],
[1, 7, 2],
[6, 9, 8]])

子问题:

  • 如何生成另一列,其值与所选列不同,例如该值可以等于第二列,但禁止匹配第一列。

我知道这可以使用标准 for 循环来完成,但如果我们谈论数百万行,这会大大降低性能,因此我正在寻找矢量化解决方案。

最佳答案

这是一种方法;

import random

def my_randint(a, select_columns, n):
integers = list(set(range(n)).difference(a[select_columns]))
return random.choice(integers)

new_col = np.apply_along_axis(my_randint, axis=1, arr=arr, select_columns=[0, 1], n=10)
new_arr = np.hstack([arr, new_col[:,None]])

请注意,我使用 random.choice 而不是 np.random.choice,因为它更快。

关于python - 矢量生成的 numpy 列,其中包含条件下的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59935993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com