Python:如何使用Python生成随机稀疏对称矩阵?

2024-01-29

如何使用python生成随机稀疏对称矩阵?

在 MATLAB 中,我们有一个函数“sprandsym(大小,密度) http://www.mathworks.fr/help/matlab/ref/sprandsym.html"

但如何在 Python 中做到这一点呢?


如果你有 scipy,你可以使用稀疏随机 https://docs.scipy.org/doc/scipy-0.19.1/reference/generated/scipy.sparse.random.html. The sprandsym下面的函数生成一个稀疏随机矩阵 X,取其上三角一半,并将其转置与其自身相加以形成对称矩阵。由于这会使对角线值加倍,因此对角线会减去一次。

非零值服从均值 0 和标准差的正态分布 1. Kolomogorov-Smirnov 检验用于检查非零值是否为 与正态分布图和直方图一致 还生成 QQ 图来可视化分布。

import numpy as np
import scipy.stats as stats
import scipy.sparse as sparse
import matplotlib.pyplot as plt
np.random.seed((3,14159))

def sprandsym(n, density):
    rvs = stats.norm().rvs
    X = sparse.random(n, n, density=density, data_rvs=rvs)
    upper_X = sparse.triu(X) 
    result = upper_X + upper_X.T - sparse.diags(X.diagonal())
    return result

M = sprandsym(5000, 0.01)
print(repr(M))
# <5000x5000 sparse matrix of type '<class 'numpy.float64'>'
#   with 249909 stored elements in Compressed Sparse Row format>

# check that the matrix is symmetric. The difference should have no non-zero elements
assert (M - M.T).nnz == 0

statistic, pval = stats.kstest(M.data, 'norm')
# The null hypothesis is that M.data was drawn from a normal distribution.
# A small p-value (say, below 0.05) would indicate reason to reject the null hypothesis.
# Since `pval` below is > 0.05, kstest gives no reason to reject the hypothesis
# that M.data is normally distributed.
print(statistic, pval)
# 0.0015998040114 0.544538788914

fig, ax = plt.subplots(nrows=2)
ax[0].hist(M.data, normed=True, bins=50)
stats.probplot(M.data, dist='norm', plot=ax[1])
plt.show()

附言。我用了

upper_X = sparse.triu(X) 
result = upper_X + upper_X.T - sparse.diags(X.diagonal())

代替

 result = (X + X.T)/2.0

因为我无法说服自己,其中的非零元素(X + X.T)/2.0有正确的分布。首先,如果X是稠密且正态分布的,平均值为 0,方差为 1,即N(0, 1), then (X + X.T)/2.0将会N(0, 1/2)。当然我们可以通过使用来解决这个问题

 result = (X + X.T)/sqrt(2.0)

反而。然后result将会N(0, 1)。但还有一个问题:如果X是稀疏的,那么在非零位置,X + X.T通常是正态分布的随机变量加零。除以sqrt(2.0)会将正态分布压缩为更接近 0,从而提供更紧密的尖峰分布。作为X变得越来越稀疏,这可能越来越不像正态分布。

因为我不知道什么分布(X + X.T)/sqrt(2.0)生成,我选择复制上三角的一半X(从而重复我所知道的正态分布的非零值)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:如何使用Python生成随机稀疏对称矩阵? 的相关文章

  • 如何查看Databricks中的所有数据库和表

    我想列出 Azure Databricks 中每个数据库中的所有表 所以我希望输出看起来像这样 Database Table name Database1 Table 1 Database1 Table 2 Database1 Table
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • android.view.WindowManager$BadTokenException 异常。有什么指针吗?

    我有两个 webview 为了从两个 webview 中删除通用功能 我创建了一个超类 其中包含超类中的所有方法 并在两个 webview 中使用它 有一次 当我创建对象并设置第一个 Web 视图中的变量时 Web 视图正确显示 当我按 返
  • Javascript 闭包/变量作用域问题 - 我知道它有效,但为什么?

    我用 JS 开发已经有一段时间了 虽然我知道下面的代码可以工作 但我不太明白why有用 在我看来 我在 testClosure 函数中定义了 testString 并且我期望该变量在 testClosure 函数完成时 消失 因为它是局部变
  • 创建属性设置器委托

    我创建了将属性 lambda 转换为委托的方法 public static Delegate MakeGetter
  • 在 C# 中通过 AWS.NET 从 S3 存储检索二进制数据

    我已经测试了适用于 NET 的 AWS 开发工具包中包含的大部分示例 它们都运行良好 我可以将对象 列表对象和删除对象放入存储桶中 但是 假设我删除了原始对象并想要同步本地丢失的那些文件 我想创建一个 GET 对象 按键 名称和原因桶 我可
  • 如何为Lua表添加前缀?

    我有一个lua文件 其内容为lua表如下 A A B A B C 0 问题是我想在上述每个语句之前添加前缀 XYZ 因此 解析之后数据库应该有这样的内容 XYZ A XYZ A B XYZ A B C 有任何想法吗 提前致谢 您可以使用以下
  • 熊猫表查找

    我有一个熊猫查找表 看起来像这样 Grade Lower Boundary Upper Boundary 1 110 96 2 96 91 3 91 85 4 85 81 5 81 77 6 77 72 7 72 68 8 68 63 9
  • SVG 和 Javascript - 创建 SVGPoint - TypeError:非法构造函数

    我正在尝试使用 Javascript 创建 SVG 多边形 当我尝试使用以下 Javascript 代码创建 SVGPoint 时 var p new SVGPoint 我收到以下消息 类型错误 非法构造函数 您需要从您的 SVG 文档中调
  • Espresso:如何滚动到 ScrollView 的底部

    在 Espresso 测试中如何向下滚动到 ScrollView 的底部 谢谢 如果在 ScrollView 的底部您需要找到一个视图并与之匹配某些内容 那么只需执行scrollTo 在需要显示它的任何其他操作之前对其执行操作 onView
  • C# 中的 Windows 时区下拉菜单 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否有一种简单的方法可以在 C 应用程序中显示 Windows 时区下拉列表 以便用户可以更改它 类似于这个时区下拉菜单 https
  • 不要从 UITableView 中删除某些行

    我正在尝试实现从 a 中删除一些行的功能table view而不是其他人 在这种情况下 一切都在section 0不应该被删除 所以也不能滑动删除 但是里面的所有内容section 1应该可以 我怎样才能实现这个 现在section 0ro
  • Ui 表单:添加运行时还是编译时?

    如果我有大量 UI 表单 我想知道哪种方法有效 我对这两种情况下的内存利用率没有任何想法 我只是在一个简单的示例中尝试了两种方法 http qt project org doc qt 4 8 designer using a ui file
  • 检查 C 枚举中是否定义了某个值?

    假设我有这个 enum A 0x2E B 0x23 C 0x40 可以检查是否x被定义为enum 我正在手动执行此操作 int isdef x A x B x C 但我想要更有活力的东西 GCC extensions也欢迎 据我所知并非如此
  • 你可以在CSS文档中使用handlebars.js变量吗?

    我有兴趣做一些条件格式并认为最好的方法是做类似的事情 InsideCSSdocument if something some css else some other css if 但我搜索了一下 只发现Django相关的东西 这在车把或任何
  • 下载S3并添加到应用程序目录

    我有一个正在尝试设置的弹性 beanstalk Node 应用程序 我正在尝试将环境文件从 S3 加载到 var app ondeck src 因此该文件在 Node 应用程序启动时可用 我已经尝试了尽可能多的方法 但 production
  • 什么是双变量参数? ~ 打字稿

    TypeScript 的文档附带编译器选项 https www typescriptlang org docs handbook compiler options html 其中 strictFunctionTypes是用它的描述来定义的
  • Python tkFileDialog.asksaveasfile - 获取文件路径

    我想获取文件 exportFile 的路径 exportFile tkFileDialog asksaveasfile mode a 如果我写 打印导出文件 我会得到
  • 想要延迟 1 秒显示数字

    我想在 TextView 中显示数字 如下所示 Wait 5 sec then a delay of 1 sec Wait 4 sec display this in the same text view along with delay
  • 哪里可以获取以前版本的 iOS 磁盘映像? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我刚刚成为 iOS 开发者计划的成员 我正在阅读 iOS 开发者计划用户指南文档 它说 从 iOS 开
  • GPL 对 javascript 库的限制 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如果我在我的网站上使用 GPL 许可的 JavaScript 组件 是否会被视为向公众发布 因为组件的客户端代码通过 http 加载到用户的浏览器 并
  • Python:如何使用Python生成随机稀疏对称矩阵?

    如何使用python生成随机稀疏对称矩阵 在 MATLAB 中 我们有一个函数 sprandsym 大小 密度 http www mathworks fr help matlab ref sprandsym html 但如何在 Python