我有一个长度的矢量,让我们说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))
我想知道是否有可能改变Matplotlib中文本的透明度.set_alpha不起作用,在文档中我找不到任何相关的东西.可能有任何变通方法吗?
我想将它连接到pick_event.
编辑:
我实际上是在尝试更改图例文本的透明度.虽然我试图解决这个问题set_alpha,但我已经监督过我试图修改列表的透明度,因此我无法成功.总而言之,从答案中可以看出,可以修改透明度set_alpha
我想知道是否有一种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)
当然,我可以通过循环其键和值来获得它.但是,我想知道是否有更好的方法来做到这一点.
我需要将嵌套值分配给字典.为了便于理解,我简化了我的问题:
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])因为我必须将对象分配给循环内的键.
对于同一任务,我编写了两个不同的函数。我想知道哪个更优雅。
任务是检查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) 我有一个字典,如:
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中,存在用于单元结构的东西).