小编lho*_*ert的帖子

networkx中的约束短路径算法?

我正在使用 networkx 来解决最短路径问题。我主要使用shortest_path。我想知道,使用当前版本的 networkx,是否可以限制最短路径计算?

下面的示例生成了 A 和 G 之间的这两条最短路径:

最短路线

左边的图片显示了最小化“长度”属性时的最佳路线,右边的图片显示了最小化“高度”属性时的最佳路线。

如果我们计算这些路线的统计数据,我们会得到:

Best route by length: ['A', 'B', 'E', 'F', 'D', 'G']
Best route by height: ['A', 'C', 'E', 'G']
Stats best routes: {
                   'by_length': {'length': 13.7, 'height': 373.0}, 
                   'by_height': {'length': 24.8, 'height': 115.0}
                   }
Run Code Online (Sandbox Code Playgroud)

有没有办法在计算最短路径时添加约束?(例如,通过最小化长度属性来计算最短路径,但同时保持height<300


计算图网络的代码:

Best route by length: ['A', 'B', 'E', 'F', 'D', 'G']
Best route by height: ['A', 'C', 'E', 'G']
Stats best routes: {
                   'by_length': {'length': 13.7, 'height': 373.0}, 
                   'by_height': {'length': 24.8, 'height': …
Run Code Online (Sandbox Code Playgroud)

python graph-theory shortest-path networkx

10
推荐指数
1
解决办法
221
查看次数

如何实现Django多用户类型,而一个用户可以根据他/她所从事的项目具有不同的角色?

我找不到我的问题的解决方案,并希望对此发表评论/帮助。

我想在 Django 中开发一个多用户类型模型,沿着作者使用 Django Proxy Models这个视频的路线。

情况

我有一个 XX 项目的列表(proj01, proj02, projXX, ...)。所有这些项目都有其特定的页面,可以通过特定的 url 访问mysite/projXX/

我有多个用户:Adam、Bob、Caroline、Dany、Ed、...

每个用户可以根据他们所从事的项目拥有多个角色(例如经理、开发人员、纪录片制作人、审阅者、编辑等)

用户可以根据项目具有不同的角色。例如,Adam 可以是 proj01 的审稿人,但可以是 proj02 的编辑,而 Bob 可以是 proj01 的编辑,但可以是 proj02 的审稿人,等等。

我开始在models.py下面的文件中定义多个用户类型(只有审阅者和编辑者角色):

# accounts/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
from django.urls import reverse
from django.utils.translation import gettext_lazy as _


class User(AbstractUser):
    class Types(models.TextChoices):
        EDITOR= "EDITOR", "Editor"
        REVIEWER = "REVIEWER", "Reviewer"

    base_type = Types.EDITOR

    type = models.CharField(
        _("Type"), max_length=50, …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-permissions

9
推荐指数
1
解决办法
225
查看次数

在“uv”模式下绘图时获取箭袋箭头(尖端和底部)的坐标

我想做什么

我希望在“uv”模式下绘图时能够获得箭袋箭头的坐标,以便重新使用这些数据来绘制其他形状(例如椭圆)。

问题

这个问题也和这个帖子有关。在这篇文章中,答案提到使用._pathsquiver 变量来获取箭头的坐标。但是,没有迹象表明如何做到这一点。

有人有解决方案可以在“uv”绘图模式下访问与箭头顶部和底部关联的坐标吗?有很多变量q._paths,我看不出哪个是相关的。

复制代码

下面的代码在“xy”模式下工作得很好:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
from matplotlib.patches import Ellipse
import matplotlib.transforms as transforms

#-------------------------------------
# Variable definition
colsec = 'royalblue'
colvec = 'salmon'
colellipse = 'limegreen'
x = np.array([ 0.00789308, -0.0773587 ,  0.03353797, -0.06185714, -0.13095092,
        0.03280368,  0.04775701, -0.08124051, -0.02894444, -0.02834356,
       -0.1457362 , -0.00628834,  0.09627607])
y = np.array([-0.03668553,  0.05931522, -0.04041772, -0.00866234, -0.00539877,
       -0.14787117, -0.21553271, -0.15741139, -0.1417963 , -0.00887117,
        0.02207362, -0.11979755, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

7
推荐指数
1
解决办法
382
查看次数

如何定义一个数据类,使其每个属性都是其子类属性的列表?

我有这个代码:

from dataclasses import dataclass
from typing import List

@dataclass
class Position:
    name: str
    lon: float
    lat: float

@dataclass
class Section:
    positions: List[Position]

pos1 = Position('a', 52, 10)
pos2 = Position('b', 46, -10)
pos3 = Position('c', 45, -10)

sec = Section([pos1, pos2 , pos3])

print(sec.positions)
Run Code Online (Sandbox Code Playgroud)

如何在数据类中创建其他属性,Section以便它们成为其子类的属性列表Position

在我的示例中,我希望 section 对象也返回:

sec.name = ['a', 'b', 'c']   #[pos1.name,pos2.name,pos3.name]
sec.lon = [52, 46, 45]       #[pos1.lon,pos2.lon,pos3.lon]
sec.lat = [10, -10, -10]     #[pos1.lat,pos2.lat,pos3.lat]
Run Code Online (Sandbox Code Playgroud)

我试图将数据类定义为:

@dataclass
class Section:
    positions: List[Position]
    names :  List[Position.name] …
Run Code Online (Sandbox Code Playgroud)

python python-dataclasses

6
推荐指数
1
解决办法
581
查看次数

获取当前的 jupyter-lab 笔记本名称 [对于 Jupyter-lab 版本 2.1 和 3.0.1 以及笔记本版本 &gt;6.0.3)

问题

大家好,

正如我的标题所暗示的那样,我想访问笔记本名称(在jupyter-lab 中)作为变量。所以我可以在笔记本本身中重用它(例如命名笔记本中生成的一些图形文件)。

我看到几年前打开了一个类似的问题[see here]。但是我没有找到满意的答案。

我喜欢@bill 建议的简单答案

import ipyparams
Run Code Online (Sandbox Code Playgroud)
currentNotebook = ipyparams.notebook_name
Run Code Online (Sandbox Code Playgroud)

但是,它对我不起作用。我第一次执行第一个单元格时收到此警告:

import ipyparams
Javascript Error: Jupyter is not defined
Run Code Online (Sandbox Code Playgroud)
currentNotebook = ipyparams.notebook_name
Run Code Online (Sandbox Code Playgroud)
currentNotebook
   ''
Run Code Online (Sandbox Code Playgroud)

然后,如果我再次重新运行该单元格,则不再有警告消息,但变量currentNotebook仍然为空。(我按顺序运行单元格,我没有执行“运行所有单元格”)。

配置详情

我的 Jupyter 版本是

jupyter notebook --version                                                                            
6.0.3]

jupyter-lab --version                                                                                 
2.1.1
Run Code Online (Sandbox Code Playgroud)

我的笔记本主要用于python代码。


编辑 27/01/2021

@juan 解决方案 [这里],使用ipynbname正在为

jupyter-notebook : 6.1.6
jupyter lab : 2.2.6
Run Code Online (Sandbox Code Playgroud)

但此解决方案仍然不适用于 jupyter lab : 3.0.1


编辑 28/01/2021

ipynbname现在适用于 jupyter 3

关于它的更多细节[ …

python jupyter jupyter-notebook jupyter-lab

3
推荐指数
1
解决办法
1540
查看次数