在 Python 中生成、填充和绘制六角形晶格

2024-04-22

我想修改我的在方晶格(它是基于代理的生物学模型)上运行的Python脚本,以在六边形宇宙中工作。

这就是我在方形模型中创建和初始化二维矩阵的方法:基本上,N 是晶格的大小,R 给出了我需要在算法开始时更改值的矩阵部分的半径:

a = np.zeros(shape=(N,N))
center = N/2

for i in xrange(N):
    for j in xrange(N):
        if( ( pow((i-center),2) + pow((j-center),2) ) < pow(R,2) ):
            a[i,j] = 1

然后,我让矩阵根据某些规则演变,最后通过创建 pickle 文件进行打印:

name = "{0}-{1}-{2}-{3}-{4}.pickle".format(R, A1, A2, B1, B2)
pickle.dump(a, open(name,"w"))

现在,我想做完全相同的事情,但在六角形格子上。我读this https://stackoverflow.com/questions/2049196/generating-triangular-hexagonal-coordinates-xyz有趣的 StackOverflow 问题,它阐明了如何用三个坐标表示六角形晶格上的位置,但据我所知,有几件事仍然模糊,即

(a)考虑到由于坐标的限制,我想要的并不等于3D矩阵,我应该如何处理Python中的三个轴,以及

(b) 如何绘制它?

至于(a),这就是我试图做的:

a = np.zeros(shape=(N,N,N))

for i in xrange(N/2-R, N/2+R+1):
    for j in xrange(N/2-R, N/2+R+1):
        for k in xrange(N/2-R, N/2+R+1):
            if((abs(i)+abs(j)+abs(k))/2 <= 3*N/4+R/2):
                a[i,j,k] = 1

在我看来,初始化一个 NxNxN 矩阵,然后找到一种方法根据坐标上的约束来打印它的子集是相当复杂的。我正在寻找一种更简单的方法,更重要的是,为了理解如何绘制算法产生的六边形格子(对此没有任何线索,我暂时没有尝试任何东西)。


我同意尝试将六方晶格硬塞进立方晶格是有问题的。我的建议是使用一个通用方案 - 将相邻站点表示为graph。这与 python 字典对象配合得很好,并且在您提供的链接之一中实现“轴向坐标方案”很简单。下面是一个使用 networkx 创建和绘制“网格”的示例。

import networkx as nx
G = nx.Graph(directed=False)
G.add_node((0,0))

for n in xrange(4):
    for (q,r) in G.nodes(): 
        G.add_edge((q,r),(q,r-1))
        G.add_edge((q,r),(q-1,r))
        G.add_edge((q,r),(q-1,r+1))
        G.add_edge((q,r),(q,r+1))
        G.add_edge((q,r),(q+1,r-1))
        G.add_edge((q,r),(q+1,r))

pos = nx.graphviz_layout(G,prog="neato")
nx.draw(G,pos,alpha=.75)

import pylab as plt
plt.axis('equal')
plt.show()

这不是最佳实现,但它可以生成任意大的格子:

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

在 Python 中生成、填充和绘制六角形晶格 的相关文章

  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • 我可以从类似于 jaxb 的 json 数据创建类吗

    因此 我的代码是 api 的客户端 数据以 xml 形式返回 我已经能够从该 xml 的一些示例创建有效的 xsd 文件 然后从模式生成一些 JAXB 类 以便我的代码现在可以加载并使用xml 数据 而无需直接使用 Xml 但不幸的是 在最
  • SignalR .NET Core 驼峰命名法 JSON 合约解析器

    使用 NET Core RC2 让 SignalR 工作 但试图让它返回 JSON 中的驼峰命名法属性 对于我正在使用的 API services AddMvc AddJsonOptions o gt o SerializerSetting
  • 如何获取 gmail api 的消费者密钥和消费者秘密?

    我正在尝试使用 Gmail php xoath php 示例 但是它需要输入消费者密钥和消费者秘密 我在 Gmail api 文档中找不到如何获取这些密钥和秘密 有谁知道如何获取它们或知道任何相关文档吗 Use anonymous anon
  • Bootstrap Carousel:删除自动滑动

    我正在使用 Bootstrap 轮播 我想要的是滑块仅在单击导航或分页时才会滑动 我尝试过删除 carousel carousel interval 6000 它工作正常 但我的问题是一旦我点击了导航或分页 它现在就会自动滑动 是否可以取消
  • 对“__divdi3”的未定义引用

    在链接一些对整数类型执行除法和模运算的代码时long long我收到以下两个错误 util c text 0x1af undefined reference to divdi3 util c text 0x1ef undefined ref
  • javascript在两个不同的索引处分割字符串

    我有一张 amex I E 信用卡 371449635398431我想分成三部分3714 496353 98431 是否有一种简单的方法可以通过预定义索引 在本例中为 4 和 10 分割字符串 可能使用简单的正则表达式函数 我真的不认为这里
  • 按天分组的 SQL 查询

    我想列出所有销售额 并按天对总和进行分组 Sales saleID INT amount INT created DATETIME 注意 我使用的是 SQL Server 2005 如果您使用的是 SQL Server dateadd DA
  • 预发送脚本如何检索参数化 Jenkins 作业的参数?

    我想根据参数化作业的布尔参数值取消电子邮件发送 该参数名为 skip email 我尝试编写包含以下内容的预发送脚本 但它不起作用 def env System getenv logger println Should I skip ema
  • 将 mvc-mini-profiler 与 EF 4.0 和 Ninject 结合使用

    我正在尝试将新的 mvc mini profiler 与基于 EF4 的应用程序一起使用 但我不知道如何正确连接到目标数据源 据我所知 Func
  • 如何在 Visual C++ 2008 中链接静态库?

    我的 VC 解决方案包括两个项目 一个应用程序 exe 和一个静态库 两者都编译良好 但无法链接 我使用的静态库中的每个函数都收到 无法解析的外部符号 错误 它们看起来像这样 MyApplication obj 错误 LNK2019 无法解
  • FileStream 添加“额外”字符到 TXT 文件

    无论我读取 TXT 文件还是 XML 文件 我总是会看到 额外 信息添加到保存到磁盘的文件中 我们首先执行以下操作 FileStream fs new FileStream fileMoverFile SourcePath FileMode
  • 为什么 C# 编译器对 double IEnumerable 和 foreach T 感到满意?

    我知道这段代码不起作用 并且以有效的方式编写它没有问题 我想知道编译器如何构建而不出现任何错误 如果您在哪里运行它 您会遇到运行时错误吗 假设数据不为空 using System using System Collections Gener
  • 是否有可能将一个 HMap '转换' 为另一个 HMap

    如果我有一个无形的 https github com milessabin shapeless HMap MappingA 为类型正确定义隐式MappingA K V 我可以安全地将其转换 映射到HMap MappingB class Ma
  • MediaRecorder.AudioSource.VOICE_CALL 不适用于 Android 4.1.2 中的通话录音

    https github com esnyder callrecorder https github com esnyder callrecorder我已应用此源代码来执行通话录音 但它不是录音通话 双向录音 经过大量搜索后 我发现 And
  • 在 C# 中通过 TCP 发送 C 结构体

    我正在编写一个程序 通过 TCP 与一台设备的管理界面进行交互 问题是 设备的文档是用C写的 而我写的程序是用C 写的 我的问题是 文档指定 通信基于基于C结构的API缓冲区 再多的谷歌搜索似乎也无法让我找到这个 API 或如何通过 TCP
  • 重写纯虚函数时使用“override”有什么意义吗?

    例如 class Base virtual void my function 0 class Derived Base void my function override 从我读到的来看 override关键字用于确保我们在重写的函数中具有
  • jQuery Mobile 将下一个输入集中在按键上

    我有一个 jquery 移动网站 其 html 表单由 4 个引脚输入框组成 我希望用户能够在每个输入字段中输入 pin 而不必按 iphone 键盘的 下一步 按钮 我尝试了以下操作 虽然它似乎将焦点设置到第二个输入并插入值 但键盘消失了
  • 在 C# 中重新抛出异常的正确方法是什么? [复制]

    这个问题在这里已经有答案了 这样做是否更好 try catch Exception ex throw Or this try catch Exception ex throw ex 他们做同样的事情吗 这个比那个好吗 您应该始终使用以下语法
  • 如何使用 PHP 发送带有内嵌附加图像的 HTML 电子邮件

    我有一个 PHP 脚本 它发送一封带有附加图像的 HTML 电子邮件 它工作得很好 但是 我无法让附件显示在 img 电子邮件正文中的标签 附件文件名为postcard png服务器上的原始文件名是4e60348f83f2f png 我尝试
  • 在 Python 中生成、填充和绘制六角形晶格

    我想修改我的在方晶格 它是基于代理的生物学模型 上运行的Python脚本 以在六边形宇宙中工作 这就是我在方形模型中创建和初始化二维矩阵的方法 基本上 N 是晶格的大小 R 给出了我需要在算法开始时更改值的矩阵部分的半径 a np zero