问题标签 [numpy-random]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
848 浏览

python - numpy.random 的 Generator 类和 np.random 方法有什么区别?

我一直在使用 numpy 的随机功能,通过调用诸如np.random.choice()or之类的方法np.random.randint()。我刚刚发现了创建default_rng对象或其他Generator对象的能力:

到目前为止,我会一直使用

相反,我想知道这两种方式之间的区别是什么。

我能想到的唯一好处是跟踪多个种子,或者想要使用特定的 PRNG,但也许对于更通用的用例也存在差异?

0 投票
2 回答
702 浏览

python - 从python中二维数组的每一行中随机选择N个元素

我有一个二维数组,比如说,a = [ [1, 2, 3, 4], [5, 6,7, 8], [9, 10, 11, 12], ...[21, 22, 23, 24] ]我想根据每行可能不同的概率分布从每一行中随机N选择元素。p

所以基本上,我想做一些类似[ np.random.choice(a[i], N, p=p_arr[i]) for i in range(a.shape[0]) ] 使用循环的事情,其中p_arr​​ 2d 数组的形状与a. p_arr将每一行的概率分布存储在a.

我想避免使用 for 循环的原因是因为运行 line profiler 表明循环大大减慢了我的代码(我有大型数组要使用)。

有没有更多的python-ic方式来做到这一点?

我查看了这些链接(此处此处),但它们没有回答我的问题。

谢谢!

我想在没有循环的情况下做的一个例子:

a = np.ones([500, 500])

>>> p_arr = np.identity(a.shape[0])

>>> for i in range(a.shape[0]):

... a[i] = a[i]*np.arange(a.shape[0])

...

>>> [print(np.random.choice(a[i], p =p_arr[i])) for i in range(a.shape[0])]

0 投票
2 回答
132 浏览

python-3.x - 交换numpy数组中元素的位置

我创建了一个 numpy 数组

我想改变元素的位置。

我的预期输出应该只包含这三种模式

我尝试使用如下排列库

实际输出:

但是我有时会得到重复的值!

欢迎提出想法!!

提前致谢!!

0 投票
1 回答
36 浏览

python - 从 np.array 中提取的互补索引不一致

问题很简单,我有一个索引向量,我想从中提取一组随机选择的索引及其补码。所以我写了以下代码:

但是,当我打印 vec、idx 和 idx_r 的长度时,它们不匹配。idx 和 idx_r 之间的总和返回值高于 len(vec)。例如,下面的代码:

返回:

5000 20462 25462 25000

Python 版本是 3.8.1,GCC 是 9.2.0。

0 投票
1 回答
690 浏览

python - 如何使用新的 NumPy 随机数生成器?

NumPy 现在建议新代码使用defacult_rng()实例而不是新代码这一事实numpy.random让我开始思考应该如何使用它来产生良好的结果,无论是性能还是统计。

第一个例子是我最初想写的:

但我也考虑过在每个函数调用中创建一个新实例:

第三种选择是将 rng 作为函数调用中的参数传递。这样,相同的 rng 也可以用于代码的其他部分。

这用于模拟环境中,该环境将经常被调用来采样,例如,转换时间。

我想问题是这三种方法中的任何一种是否存在论据,是否存在某种实践?

此外,任何对使用这些随机数生成器的更深入解释的参考(除了 NumPy 文档和随机采样文章)都非常有趣!

0 投票
1 回答
86 浏览

python - 具有排除项的随机数生成器

我有 9x9 numpy 数组,里面填充了数字 [1;9]。我需要选择随机位置并将此单元格分配为 0,直到获得一定的难度值。顺便说一句,我的表应该满足某些标准,并且在多次测试中检查了功能。

我需要的是获得不会随时间重复的随机值对(i 和 j)。有什么我可以使用的功能或我可以实现的方法吗?先感谢您。

0 投票
1 回答
626 浏览

python - 为什么 np.random.default_rng().permutation(n) 优于原始的 np.random.permutation(n)?

Numpy 文档建议使用Random Generator 包中的所有np.random.permutation新代码。np.random.default_rng()我在文档中看到 Random Generator 包已经标准化了围绕 BitGenerator 生成各种随机分布,而不是使用我隐约熟悉的 Mersenne Twister。

我看到了一个缺点,过去只需要一行代码就可以进行简单的排列:

现在变成了两行代码,对于这么简单的任务感觉有点别扭:

  • 为什么这种新方法比以前的方法有所改进?
  • 为什么现有的方法不能像np.random.permutation包装这种新的首选方法一样呢?
  • np.random.default_rng().permutation(10)假设它没有被大量调用,是否有充分的理由不将这种新方法用作单线?
  • 是否有将现有代码切换到此方法的论据?
0 投票
2 回答
271 浏览

python - 为什么 numpy.random.Generator.choice 即使给定固定种子也会给出不同的结果?

代码很简单:

可能我遗漏了一些东西,但我理解这一点的方式是 rng.choice,使用完全相同的参数运行,如果它被播种,应该总是返回相同的东西。我错过了什么?

0 投票
2 回答
275 浏览

python - 与默认的均匀分布相比,为什么 numpy.random.Generator.choice 在给定的均匀分布下提供不同的结果(种子)?

简单的测试代码:

numpy 文档说:

与 a 中的每个条目相关联的概率。如果没有给出样本,则假设 a 中所有条目的分布是均匀的。

我不知道创建统一分布的任何其他方式,但是numpy.repeat(1/len(pop),len(pop)).

numpy 是否在使用其他东西?为什么?

如果不是,设置分布如何影响种子?

分发和种子不应该是独立的吗?

我在这里想念什么?

0 投票
2 回答
38 浏览

numpy-random - 使用 Numpy Random 函数时出错(np.random.random_integers)

在此处输入图像描述

使用 numpy 随机函数时出错,它显示 int object not callable 请建议替代