随机迭代所有排列

2024-02-28

我导入了一个大数组,我想随机迭代所有行排列。 该代码被设计为在某个数组产生所需的解决方案时中断。 到目前为止的尝试涉及正常的迭代扰动过程:

import numpy as np
import itertools

file = np.loadtxt("my_array.csv", delimiter=", ")
for i in itertools.permutations(file):
    ** do something **
    if condition:
        break

然而,我希望迭代能够覆盖所有扰动并且是随机的,没有重复。

理想情况下,(不同于Python 中的随机迭代 https://stackoverflow.com/questions/9252373/random-iteration-in-python)我还会避免将数组的所有排列存储在内存中。 因此,基于生成器的解决方案将是最好的。 有一个简单的解决方案吗?


答案是首先编写一个函数,给定 [0, n!) 中的整数 k,返回第 k 个排列:

def unrank(n, k):
    pi = np.arange(n)
    while n > 0:
        pi[n-1], pi[k % n] = pi[k % n], pi[n-1]
        k //= n
        n -= 1
    return pi

该技术被发现于作者:温迪·梅尔沃德和弗兰克·鲁斯基。

然后,如果我们可以生成 [0, n!) 的随机排列,我们就完成了。我们可以找到一种技术(无需构建整个排列)有时递归洗牌 https://eprint.iacr.org/2013/560.pdf作者:本·莫里斯和菲利普·罗格威。我有一个可用的实现here https://gist.github.com/orlp/33535eefce782a59e185e4a971cda1a3.

那么,我们所要做的就是:

import math
a = np.array(...)  # Load data.
p = SometimeShuffle(math.factorial(len(a)), "some_random_seed")
for kth_perm in p:
    shuffled_indices = unrank(len(a), kth_perm)
    shuffled_a = a[shuffled_indices]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

随机迭代所有排列 的相关文章

随机推荐

  • 滚动经过一定数量的像素时位置固定

    我正在寻找一种方法 仅在向下滚动大约 170 像素后将页面的 header 元素定位为 固定 标题上方是一个横幅 因此当人们向下滚动时 我希望横幅滚动走 标题在到达窗口顶部时保持固定 页面内容在标题下方滚动 http jsfiddle ne
  • 节点 8.6 javascript 承诺:UnhandledPromiseRejectionWarning

    我有一个错误 节点 6186 UnhandledPromiseRejectionWarning 未处理的承诺拒绝 拒绝 ID 1 三p 节点 6186 DEP0018 DeprecationWarning 未处理的承诺拒绝已被弃用 将来 未
  • 当某些内容存储为数组时,Rails where 子句

    我正在运行 Rails 4 2 带有 PG 数据库 我有一个项目存储在数据库中 例如 模型Item something gt 1 2 3 我想得到Item where something include gt 3 显然这是行不通的 但是你打
  • 创建表语法在 hsql 中不起作用

    我是 hsqldb 新手 我正在开发简单的应用程序来获取用户的一些输入 因此搜索嵌入式数据库并发现 hsqldb 是满足我的要求的解决方案 我有一些创建表语法 但它抛出异常 此查询使用 Netbeans 数据库服务执行 Query CREA
  • iOS - Facebook 登录错误 - 构建 URL 时出现未知错误(com.facebook.sdk.core 错误 3)

    我正在使用 Facebook 登录我的 iOS 应用程序 该应用程序是为 iOS 8 及更高版本开发的 正在使用最新的Facebook SDK 我已遵循 Facebook 官方指南中描述的所有基本步骤 但是 当我单击登录按钮时 出现以下错误
  • 如何组织大型 Node.js 项目

    组织大型 Node js 项目有哪些好方法 例如 一个同时使用express js 和socket io 的应用程序 这将包括应用程序逻辑结构和文件系统 目前 我发现自己将大量代码放入一个主 js 文件中 并将代码放入一个巨大的全局对象中
  • Rails 3.1 强制使用 .html 而不是无扩展名

    我的一位客户希望他的新 Rails 应用程序看起来更像他的传统网站 他想知道我是否可以强制 url 具有文件扩展名 最好是 html 我不想对扩展进行硬编码routes rb as match controller action id ht
  • 难以通过网络蓝牙连接热敏打印机

    现在我正在开发能够连接热敏打印机的网络 我正在使用 Angular 框架 并且我使用库成功将热敏打印机与 USB 连接ng thermal printer 但我希望我的网络也能够通过网络蓝牙 BLE 蓝牙低功耗 连接热敏打印机 据我所知 B
  • 转换为乔姆斯基范式

    我确实需要你的帮助 我有这些作品 1 A gt aAb 2 A gt bAa 3 A gt 我应该应用乔姆斯基范式 CNF 为了应用上述规则 我应该 消除 产生式 消除单一生产 删除无用的符号 我立即陷入困境 原因是 A 是一个可为空的符号
  • 它仍然适用于在 RedHat7 上使用 pexpect 还是有替代方法来执行命令并响应提示?

    我尝试在 Redhat7 中使用 pexpect for ansible 但无法安装它 我只得到 pexpect noarch 2 3 11 el7 RHEL7 版本 或者 pexpect 是否有替代方法来执行命令并响应提示 看起来像的版本
  • 给定python代码的打印语句语法错误的原因是什么[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 编辑问题以包括期望的行为 特定问题或错误以及重现问题所需的最短代码 help minimal reproducible example 这
  • 将 Meteor 部署到 Android 设备时找不到构建工具修订版 24.0.1

    我错误地完全删除了 Android SDK 文件夹 之前我已经使用cordova phonegap多次将meteor部署到android设备上 当通过 Android Studio 重新安装 SDK 并尝试在设备中运行 Meteor 时 我
  • SQLAlchemy over MySQLdb 的目的

    为什么人们使用 SQLAlchemy 而不是 MySQLdb 它有什么优点 您不使用 SQLAlchemy 来代替 MySQLdb 您使用 SQLAlchemy 来访问 MySQLdb oursql 我听说更好并且性能更好的另一个 MySQ
  • Xcode 未反映来自 React-Native 的最新应用程序代码

    EDIT 好吧 事实证明这不是 AppStore 的问题 我从 Xcode 发布模式运行了应用程序 并且在模拟器上运行了相同的旧版本 我不知道为什么 但 Xcode 没有运行最新的 jsbundle 现在我发现this https stac
  • 在 Dart 中获取与正则表达式匹配的所有子字符串的最佳方法

    我想获取与字符串中的正则表达式匹配的子字符串列表 做这个的最好方式是什么 dart core 中的 RegExp 对象有Iterable
  • 用java下载包含资源(如图像)的完整网页

    有没有办法下载 html 网页及其所有资源 例如 图像 CSS 我知道如何使用 html 解析器通过遍历所有相关标签来做到这一点 但是没有easy way That is最简单的方法 困难的方法是编写自己的网络库 html 解析器等
  • SwiftUI 中 ObservedObject 和 StateObject 有什么区别

    如果我有一个ObservableObject在 SwiftUI 中我可以将其称为 ObservedObject class ViewModel ObservableObject Published var someText Hello Wo
  • 如何轻松分析 Oracle 包的执行是否存在性能问题?

    我在 11g R2 DB 中有一个 pl sql 包 它有相当多的相关过程和函数 我执行一个顶级函数 它做了很多事情 当前每秒处理 对于 Oracle 的 PL SQL 分层分析器 DBMS HPROF 来说 这似乎是一项不错的工作 作为一
  • 优化 iPhone OpenGL ES 填充率

    我的 iPhone 上有一个 Open GL ES 游戏 我的帧率很糟糕 20fps 在 iPhone 3G 上使用 Xcode OpenGL ES 性能工具 它显示 渲染器利用率 95 至 99 瓷砖利用率 27 我正在绘制很多非常大的图
  • 随机迭代所有排列

    我导入了一个大数组 我想随机迭代所有行排列 该代码被设计为在某个数组产生所需的解决方案时中断 到目前为止的尝试涉及正常的迭代扰动过程 import numpy as np import itertools file np loadtxt m