我有公式
a * b * cos( c * x ) + b
是否有可能像 Mathematica 一样创建公式的树结构(https://reference.wolfram.com/language/GraphUtilities/ref/ExpressionTreePlot.html)
对于这个公式,例如在 numpy、sympy 甚至张量流中?
编辑
在评论的帮助下,我发现,人们可以使用 graphviz 来绘制它,就像 https://docs.sympy.org/latest/tutorial/manipulation.html中第一张图片中所说的那样 ,但我不这样做明白,如何。
我正在尝试与 Networkx 合作创建一个由固定数量社区组成的图,其中为给定社区内的节点添加边和为不同社区之间的节点添加边的概率不同。我已经查看了定向scale_free_graph的生成器。以下是如何使用它创建三个断开连接图的示例:
import matplotlib.pyplot as plt
import networkx as nx
import numpy as np
N_tot = 100 # total number of nodes
pos_frac = 0.1 # fraction of positive nodes
neg_frac = 0.1 # fraction of negative nodes
N_p = int(pos_frac*N_tot) # number of positive nodes
N_n = int(neg_frac*N_tot) # number of negative nodes
N_0 = int(N_tot - (N_p + N_n)) # number of neutral nodes
G1 = nx.scale_free_graph(N_p, seed=3)
G2 = nx.scale_free_graph(N_n, seed=2)
G3 = nx.scale_free_graph(N_0, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Mutagen以下列方式更改一堆 MP3 文件的 ID3(版本 2.3)封面艺术:
from mutagen.mp3 import MP3
from mutagen.id3 import APIC
file = MP3(filename)
with open('Label.jpg', 'rb') as albumart:
file.tags['APIC'] = APIC(
encoding=3,
mime='image/jpeg',
type=3, desc=u'Cover',
data=albumart.read()
)
file.save(v2_version=3)
Run Code Online (Sandbox Code Playgroud)
然而,文件(或至少APIC标签)保持不变,通过读回标签来检查。但是,在系统文件资源管理器中,该文件确实显示了更新的Date modified. 如何让 Mutagen 正确更新封面?
我在下面有一些 pandas 数据框形式的数据,其中列代表离散技能,行代表离散工作。仅当该技能是工作所需时才存在 1,否则为 0。
skill_1, skill_2,
job_1 1, 0,
job_2 0, 0,
job_3 1, 1,
Run Code Online (Sandbox Code Playgroud)
我想使用 networkx 创建一个图表来可视化工作和技能之间的关系。我尝试了两种方法,一种是针对数据框本身,nx.from_pandas_adjacency另一种是针对nx.from_numpy_matrix. 后一种方法应用于数据帧的 numpy 表示,其中删除了列名和行名。
无论哪种情况,都会引发错误,因为这是一个非方矩阵。这是有道理的,因为 networkx 可能将列和行解释为同一组节点。然而,这里的列和节点代表明显不同的东西。两项工作通过它们共享的技能连接起来,两种技能通过它们共享的工作连接起来,但任何两种技能或任何两个工作之间不存在直接优势。
鉴于我的行和列是不同的节点集,如何将数据导入到 networkx 中?
我正在尝试使用 Karate Runner 执行一些测试 -
@KarateOptions(tags = {"~@ignore"})
//@KarateOptions(features = "examples/test.feature")
public class KarateTestRunner {
@BeforeClass
public static void beforeClass() throws Exception {
//TestBase.beforeClass();
}
@Test
public void testParallel() {
Results results = Runner.parallel(getClass(), 5);
generateReport(results.getReportDir());
assertTrue(results.getErrorMessages(), results.getFailCount() == 0);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试执行我的测试时:
-mvn test -Dtest=KarateTestRunner -DfailIfNoTests=false
Run Code Online (Sandbox Code Playgroud)
它显示——
{ ","type":"log","logger":"com.intuit.karate.Runner","thread":"main","level":"INFO","categories":[],"msg":"waiting for parallel features to complete ..." }
Run Code Online (Sandbox Code Playgroud)
它挂在这里。没有日志。
任何人都可以请帮忙。
我最近从使用 TeX (PGF/TikZ) 制作插图转向使用 Matplotlib 来达到同样的目的。主要原因是我的很多科学代码都是用python写的,有些插图应该直接使用python计算的输出。
我一直在使用annotate和花哨的箭头补丁,它已经做了很多我需要什么,比如绘图弯箭(例如参见这里)。与 TikZ 相比,我遗漏了一件特别的事情:路径装饰(参见https://tex.stackexchange.com/a/193451/96546以获取一个简单的 TikZ 示例)。我的问题是是否有办法在 matplotlib 中进行这种 TikZ 风格的路径装饰?
由于这是相当广泛的,我将设置一个特定的任务(取自 TeX.SE 问题https://tex.stackexchange.com/questions/193444/sketching-simple-arrows-with-different-direction):我将如何绘制Matplotlib 中的以下图片?
我知道这个问题,但实现实际上并不是端点之间线的装饰,而是绘制的函数。
我想找到浮点数列表的总和并检查它是否是整数:
l = [0.85, 0.85, 0.15, 0.15]
Run Code Online (Sandbox Code Playgroud)
l显然,和是 2.0。但 Python 不同意,由于浮点数限制:
> sum(l)
1.9999999999999998
Run Code Online (Sandbox Code Playgroud)
因此,我选择的方法sum(l).is_integer(),将返回False。
评估列表是否为整数的更好方法是什么?
我有这个等式:
\n\nimport sympy as sp\n\nx = sp.Symbol(\xe2\x80\x98x\xe2\x80\x99, real = True)\nfx = sp.log(x,3)\n\nsp.diff(fx, x) \nRun Code Online (Sandbox Code Playgroud)\n\nSympy 返回:
\n\n1/(x*log(3))\nRun Code Online (Sandbox Code Playgroud)\n\nSympy 应该返回:
\n\n1/(x*ln(3))\nRun Code Online (Sandbox Code Playgroud)\n\n为什么 Sympy 返回对数函数而不是自然对数函数?
\n我有一个功能
def max_f(tup, val):
max = tup[0](val)
out = tup[0]
for funz in tup:
new = funz(val)
if new > max:
max = new
out = funz
return out
Run Code Online (Sandbox Code Playgroud)
我想以更好的方式写它。我试过
def max_f2(tup, val):
return (max(funz(val) for funz in tup))
Run Code Online (Sandbox Code Playgroud)
但我应该返回一个函数,而不是一个值。我怎么能?
这些是正确输出的一些示例
tupleFunz=(lambda x: x + 3 ,lambda x: x * 2,lambda x: x % 2)
max_f(tupleFunz,4)(8) #=> 16
max_f(tupleFunz,1)(8) #=> 11
Run Code Online (Sandbox Code Playgroud) 我有以下代码来生成漂亮的圆环图:
%matplotlib inline
import matplotlib.pyplot as plt
size_of_groups=[12,11,30,3]
colors = ['#F92969','#FACA0C','#17C37B','#D9DFEB']
my_pie,_ = plt.pie(size_of_groups,radius = 1.2,colors=colors)
plt.setp(my_pie, width=0.6, edgecolor='white') #
plt.show()
Run Code Online (Sandbox Code Playgroud)
我没有采用在圆环图中间放置一个圆圈的方法 - 这是因为我需要使绘图的内部透明以用于其他目的。
现在,上面的输出是这样的:

但是,当我更改代码以添加该,autopct="%.1f%%"行时,它会中断,但无论如何都会输出带有标签的饼图(尽管不是甜甜圈):
%matplotlib inline
import matplotlib.pyplot as plt
size_of_groups=[12,11,30,3]
colors = ['#F92969','#FACA0C','#17C37B','#D9DFEB']
my_pie,_ = plt.pie(size_of_groups,radius = 1.2,colors=colors,autopct="%.1f%%")
plt.setp(my_pie, width=0.6, edgecolor='white') #
plt.show()
Run Code Online (Sandbox Code Playgroud)

错误是:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-39-ada97a3edee3> in <module>
13
14 # Create a pieplot
---> 15 my_pie,_ = plt.pie(size_of_groups,radius = 1.2,colors=colors,autopct="%.1f%%")
16
17 #,autopct="%.1f%%"
ValueError: too many values to …Run Code Online (Sandbox Code Playgroud) python ×9
graph-theory ×2
math ×2
matplotlib ×2
networkx ×2
numpy ×2
python-3.x ×2
sympy ×2
derivative ×1
diagram ×1
donut-chart ×1
drawing ×1
for-loop ×1
function ×1
graph ×1
id3-tag ×1
id3v2 ×1
karate ×1
lambda ×1
list ×1
maven ×1
mp3 ×1
mutagen ×1
pandas ×1
plot ×1
sum ×1
tensorflow ×1
testing ×1
tikz ×1
tuples ×1