问题标签 [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.
python - numpy.random 的 Generator 类和 np.random 方法有什么区别?
我一直在使用 numpy 的随机功能,通过调用诸如np.random.choice()
or之类的方法np.random.randint()
。我刚刚发现了创建default_rng
对象或其他Generator
对象的能力:
到目前为止,我会一直使用
相反,我想知道这两种方式之间的区别是什么。
我能想到的唯一好处是跟踪多个种子,或者想要使用特定的 PRNG,但也许对于更通用的用例也存在差异?
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])]
python-3.x - 交换numpy数组中元素的位置
我创建了一个 numpy 数组
我想改变元素的位置。
我的预期输出应该只包含这三种模式
我尝试使用如下排列库
实际输出:
但是我有时会得到重复的值!
欢迎提出想法!!
提前致谢!!
python - 从 np.array 中提取的互补索引不一致
问题很简单,我有一个索引向量,我想从中提取一组随机选择的索引及其补码。所以我写了以下代码:
但是,当我打印 vec、idx 和 idx_r 的长度时,它们不匹配。idx 和 idx_r 之间的总和返回值高于 len(vec)。例如,下面的代码:
返回:
5000 20462 25462 25000
Python 版本是 3.8.1,GCC 是 9.2.0。
python - 如何使用新的 NumPy 随机数生成器?
NumPy 现在建议新代码使用defacult_rng()
实例而不是新代码这一事实numpy.random
让我开始思考应该如何使用它来产生良好的结果,无论是性能还是统计。
第一个例子是我最初想写的:
但我也考虑过在每个函数调用中创建一个新实例:
第三种选择是将 rng 作为函数调用中的参数传递。这样,相同的 rng 也可以用于代码的其他部分。
这用于模拟环境中,该环境将经常被调用来采样,例如,转换时间。
我想问题是这三种方法中的任何一种是否存在论据,是否存在某种实践?
此外,任何对使用这些随机数生成器的更深入解释的参考(除了 NumPy 文档和随机采样文章)都非常有趣!
python - 具有排除项的随机数生成器
我有 9x9 numpy 数组,里面填充了数字 [1;9]。我需要选择随机位置并将此单元格分配为 0,直到获得一定的难度值。顺便说一句,我的表应该满足某些标准,并且在多次测试中检查了功能。
我需要的是获得不会随时间重复的随机值对(i 和 j)。有什么我可以使用的功能或我可以实现的方法吗?先感谢您。
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)
假设它没有被大量调用,是否有充分的理由不将这种新方法用作单线?- 是否有将现有代码切换到此方法的论据?
python - 为什么 numpy.random.Generator.choice 即使给定固定种子也会给出不同的结果?
代码很简单:
可能我遗漏了一些东西,但我理解这一点的方式是 rng.choice,使用完全相同的参数运行,如果它被播种,应该总是返回相同的东西。我错过了什么?
python - 与默认的均匀分布相比,为什么 numpy.random.Generator.choice 在给定的均匀分布下提供不同的结果(种子)?
简单的测试代码:
numpy 文档说:
与 a 中的每个条目相关联的概率。如果没有给出样本,则假设 a 中所有条目的分布是均匀的。
我不知道创建统一分布的任何其他方式,但是numpy.repeat(1/len(pop),len(pop))
.
numpy 是否在使用其他东西?为什么?
如果不是,设置分布如何影响种子?
分发和种子不应该是独立的吗?
我在这里想念什么?
numpy-random - 使用 Numpy Random 函数时出错(np.random.random_integers)
使用 numpy 随机函数时出错,它显示 int object not callable 请建议替代