小编T-8*_*800的帖子

通过仅指定列大小将数组重新整形为2-D

我有一个长度的矢量,让我们说10:

foo = np.arange(2,12)
Run Code Online (Sandbox Code Playgroud)

为了将它转换为2-D数组,让我们说2列,我使用reshape带有以下参数的命令:

foo.reshape(len(foo)/2, 2)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更优雅的方式/语法来做(可能是某样的foo.reshape(,2))

python numpy python-2.x

13
推荐指数
1
解决办法
8330
查看次数

Matplotlib文本透明度

我想知道是否有可能改变Matplotlib中文本的透明度.set_alpha不起作用,在文档中我找不到任何相关的东西.可能有任何变通方法吗?

我想将它连接到pick_event.

编辑: 我实际上是在尝试更改图例文本的透明度.虽然我试图解决这个问题set_alpha,但我已经监督过我试图修改列表的透明度,因此我无法成功.总而言之,从答案中可以看出,可以修改透明度set_alpha

python matplotlib

5
推荐指数
1
解决办法
1941
查看次数

Pythonic完全从字典中删除项目的方法

我想知道是否有一种pythonic方法可以完全从字典中删除一个项目.为了说明这一点,请考虑下面给出的字典:

mydict = {'A': ['B', 'O'],
          'B': ['A'],
          'C': ['D', 'E', 'F', 'O'],
          'D': ['E', 'C', 'F'],
          'E': ['C', 'D', 'F', 'O'],
          'F': ['C', 'D', 'E'],
          'G': ['H', 'O'],
          'H': ['G', 'O'],
          'O': ['A', 'C', 'E', 'G', 'H']}
Run Code Online (Sandbox Code Playgroud)

让我们说,我想'E'从字典中删除.然后我希望得到这样一本字典:

mydict = {'A': ['B', 'O'],
          'B': ['A'],
          'C': ['D', 'F', 'O'],
          'D': ['C', 'F'],
          'F': ['C', 'D', ],
          'G': ['H', 'O'],
          'H': ['G', 'O'],
          'O': ['A', 'C', 'G', 'H']}
Run Code Online (Sandbox Code Playgroud)

当然,我可以通过循环其键和值来获得它.但是,我想知道是否有更好的方法来做到这一点.

python dictionary

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

在词典中分配嵌套键和值

我需要将嵌套值分配给字典.为了便于理解,我简化了我的问题:

Data = {}   
day1 = 'March12'
day2 = 'March14'
e1 = 'experiment1'
e2 = 'experiment2'

Data[day1][e1] = 4 
Run Code Online (Sandbox Code Playgroud)

但是该Data[day1][e1] = 4命令不起作用(出于同样的原因test = {} ; test["foo"]["bar"] = 0).有没有解决方法来做到这一点?

我试着这样做:

me1 = {e1 : 4}
me2 = {e2 : 5}
Data = {day1 : me1}
Data = {day2 : me2}
Run Code Online (Sandbox Code Playgroud)

但我不能成功; 我写的所有东西都以某种方式覆盖了现有的价值观,或者不像我希望的那样.我可能错过了一些东西......

一些额外的注释:在begininng没有关于字典长度的任何信息,或它的确切外观.而不是值4,我将一个对象指定为值.我需要使用这样的结构(Data[day1][e1])因为我必须将对象分配给循环内的键.

python dictionary

2
推荐指数
1
解决办法
3124
查看次数

Python编码风格-多个return语句

对于同一任务,我编写了两个不同的函数。我想知道哪个更优雅。

任务是检查pydot对象是否包含请求的节点,如果是,则返回节点和图形对象。如果该节点不存在,则需要创建该节点。

为了获得节点的名称,我使用pydot对象get_nodes()函数。但是,如果尚未引入任何节点,则此函数将返回一个空列表。因此,在遍历值之前,我进行了一个空列表检查。

第一个变体(“ variant1”)很容易理解。在进行长度检查(这是由于所必需的)之后node.get_name(),它循环到节点名称,一旦找到要搜索的节点,就返回该节点和图形。如果没有,它将调用一个函数来创建节点并更新图形。尽管此功能易于理解,但恕我直言,它并不美观。它包含两个“ return”语句:

def variant1(node_name, graph):

    if len(graph.get_nodes()) > 0:

        for node in graph.get_nodes():
            if node_name == node.get_name():
                return node, graph

    return create_node(node_name, graph)
Run Code Online (Sandbox Code Playgroud)

第二种变体要复杂得多。一旦在图中找到该节点,它就会断开并直接跳到最后一行(“返回节点,图”)。此变体只有一个return语句。

def variant2(node_name, graph):

    if len(graph.get_nodes()) > 0:

        for node in graph.get_nodes():
            if node_name == node.get_name():
                break

        else:
            # the node doesnt exist. create it and update the graph
            node, graph = create_node(node_name, graph)

    else:
        # create the first node in the graph
        node, graph …
Run Code Online (Sandbox Code Playgroud)

python coding-style pydot

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

访问密钥的值

我有一个字典,如:

Data = {
    "weight_factors" : {
        "parameter1" : 10,
        "parameter2" : 30,
        "parameter3" : 30
        },
    "other_info" : {
        }
}
Run Code Online (Sandbox Code Playgroud)

我想获得密钥下所有值的总和"weight_factors":

sum = Data["weight_factors"]["parameter1"] + 
      Data["weight_factors"]["parameter2"] + 
      Data["weight_factors"]["parameter3"] 
Run Code Online (Sandbox Code Playgroud)

目前,为了避免Data["weight_factors"]重复输入,我使用以下命令:

d = Data["weight_factors"]
d["parameter1"] + d["parameter2"] + d["parameter3"]
Run Code Online (Sandbox Code Playgroud)

但是,我想应该有一个运算符执行相同的操作,而不存储Data["weight_factors"]为中间变量.我想知道这样的命令或操作员是否存在.

Data["weight_factors"]<unknown operator>(["parameter1"] + 
                                         ["parameter2"] +
                                          ... 
                                         ["parametern"])<unknown operator>
Run Code Online (Sandbox Code Playgroud)

编辑: 在上面给出的例子中,它只是一个求和操作.但它可以是例如:

Data["weight_factors"]["parameter1"] * Data["weight_factors"]["parameter2"] + Data[??"weight_factors"]["parameter3"]
Run Code Online (Sandbox Code Playgroud)

但我不想Data["weight_factors"]反复输入.这就是我要搜索的东西......我不知道这样的运算符是否存在.(在MATLAB中,存在用于单元结构的东西).

python dictionary

0
推荐指数
1
解决办法
172
查看次数