小编Joh*_*anC的帖子

Sympy:如何解析诸如“2x”之类的表达式?

            #split the equation into 2 parts using the = sign as the divider, parse, and turn into an equation sympy can understand
            equation = Eq(parse_expr(<input string>.split("=")[0]), parse_expr(<input string>.split("=")[1]))
            answers = solve(equation)
            #check for answers and send them if there are any
            if answers.len == 0:
                response = "There are no solutions!"
            else:
                response = "The answers are "
                for answer in answers:
                    response = response + answer + ", "
                response = response[:-2]
        await self.client.send(response, message.channel)
Run Code Online (Sandbox Code Playgroud)

我试图制作一个使用 sympy 来解决代数的不和谐机器人,但我一直遇到上述实现的错误。有人可以帮忙吗?

但是对于输入 …

sympy python-3.x

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

Sympy:lambda 化使得对数组的操作总是产生数组,对于常量也是如此?

我需要在许多点上评估用户给出的函数(f')的导数。这些点位于列表中(或 numpy.array、pandas.Series...)。当 f' 取决于 sympy 变量时,我获得了预期值,但当 f' 是常量时,我​​获得了预期值:

import sympy as sp

f1 = sp.sympify('1')
f2 = sp.sympify('t')

lamb1 = sp.lambdify('t',f1)
lamb2 = sp.lambdify('t',f2)

print(lamb1([1,2,3]))
print(lamb2([1,2,3]))
Run Code Online (Sandbox Code Playgroud)

我得到:

1
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

第二个是好的,但我预计第一个将是一个列表。

这些函数位于矩阵中,是 sympy 运算(例如求导)的最终结果。f1 和 f2 的确切形式因问题而异。

python numpy sympy

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

添加一个颜色条,其颜色对应于现有图中的不同线条

我的数据集采用以下形式:

Data[0] = [headValue,x0,x1,..xN]
Data[1] = [headValue_ya,ya0,ya1,..yaN] 
Data[2] = [headValue_yb,yb0,yb1,..ybN]
...
Data[n] = [headvalue_yz,yz0,yz1,..yzN]
Run Code Online (Sandbox Code Playgroud)

我想绘制 f(y*) = x,所以我可以用不同的颜色可视化同一图中的所有线图,每种颜色由 headervalue_y* 决定。

我还想添加一个颜色条,其颜色与线条匹配,因此与标题值匹配,因此我们可以直观地链接哪个标题值导致哪种行为。

这是我的目标:(来自 Lacroix B、Letort G、Pitayu L 等人的情节。微管动力学尺度与细胞大小设置主轴长度和装配时间。开发细胞。2018;45(4):496-511 .e6. doi:10.1016/j.devcel.2018.04.022)

来自 Lacroix 等人的图。

我在添加颜色条时遇到了麻烦,我尝试从颜色图中提取 N 种颜色(N 是我的不同 headValues 的数量,或列 -1),然后为每条线图添加对应的颜色,这是我要澄清的代码:

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

Data = [['Time',0,0.33,..200],[0.269,4,4.005,...11],[0.362,4,3.999,...16.21],...[0.347,4,3.84,...15.8]]
headValues = [0.269,0.362,0.335,0.323,0.161,0.338,0.341,0.428,0.245,0.305,0.305,0.314,0.299,0.395,0.32,0.437,0.203,0.41,0.392,0.347]
# the differents headValues_y* of each column here in a list but also in Data
# with headValue[0] = Data[1][0], headValue[1] = Data[2][0] ...
cmap = …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

实现贝茨分布

我一直在尝试绘制贝茨分布曲线,贝茨分布是n独立标准均匀变量(从 0 到 1)的平均值的分布。

(我在时间间隔上工作[-1;1],我对变量进行了简单的更改)。

在 n 次之后,曲线不稳定,这阻止了我继续前进。为了考虑变量x是连续的,我在10**6个样本中采样了interval。以下是不同的一些示例n

某些不同 n 的贝茨分布

但是n大于29,曲线发散,并且越大n,发散引起的变形越接近曲线的(平均)中心:

分布的发散

Bates 概率分布定义如下:

贝茨分布

我的代码:

samples=10**6

def combinaison(n,k):   # combination of K out of N
  cnk=fac(n)/(fac(k)*fac(abs(n-k))) # fac is factoriel 
  return cnk


def dens_probas(a,b,n):
  x=np.linspace(a, b, num=samples)
  y=(x-a)/(b-a)
  F=list()
  for i in range(0,len(y)):
    g=0
    for k in range(0,int(n*y[i]+1)):
      g=g+pow(-1,k)*combinaison(n,k)*pow(y[i]-k/n,n-1)
    d=(n**n/fac(n-1))*g
    F.append(d)         
  return F 
Run Code Online (Sandbox Code Playgroud)

任何想法来纠正更大的分歧n

python math optimization computer-vision

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

如何在 0 和平均值的 y 值之间的 distplot 上绘制平均线?

我有一个 distplot,我想绘制一条从 0 到平均频率的 y 值的平均线。我想这样做,但是当 distplot 执行时让该行停止。为什么没有一个简单的参数来做到这一点?这将非常有用。

我有一些代码可以让我几乎到达那里:

plt.plot([x.mean(),x.mean()], [0, *what here?*])

Run Code Online (Sandbox Code Playgroud)

这段代码按照我想要的方式绘制了一条线,除了我想要的 y 值。使 y 最大值停止在 distplot 中的均值频率处的正确数学方法是什么?下面是我的一个 distplots 的示例,使用 0.6 作为 y-max。如果有一些数学方法可以让它停在均值的 y 值处,那就太棒了。我试过将平均值除以计数等。

在此处输入图片说明

python distribution matplotlib seaborn

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

从 timeserie 数据帧绘制桑基图

我有一个数据框A

date        Cluster    count Users 
01/01/2021  ClusterA    10
01/01/2021  ClusterB    10
01/01/2021  ClusterB    9
02/01/2021  ClusterA    14
02/01/2021  ClusterB    10
02/01/2021  ClusterB    5
Run Code Online (Sandbox Code Playgroud)

我想可视化集群之间的用户迁移,为此,我首先生成以下 dataframeB :

date        Source     Target    Value 
02/01/2021  ClusterA   ClusterA   8
02/01/2021  ClusterA   ClusterB   2
02/01/2021  ClusterB   ClusterB   8
02/01/2021  ClusterB   ClusterA   2
02/01/2021  ClusterC   ClusterA   4
02/01/2021  ClusterC   ClusterC   5
Run Code Online (Sandbox Code Playgroud)

我画了桑基图:

import plotly.graph_objects as go
label = ["ClusterA01/01/2021","ClusterB01/01/2021","ClusterC01/01/2021","ClusterA02/01/2021","ClusterB02/01/2021","ClusterC02/01/2021"]
source = [0, 0, 1, 1, 2,2]
target = [3, 4, 3, 4, 3,5]
value = [8, 2, …
Run Code Online (Sandbox Code Playgroud)

python plotly sankey-diagram plotly-python

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

如何在plotly (python) sankey中显示图例?

我想绘制一些代表不同物质质量流量的桑基图以供报告。我想用图例来区分这些物质,但我不知道该怎么做。我尝试过showlegend但没有成功

import plotly.graph_objects as go

fig = go.Figure(data=[go.Sankey(
    node = dict(
      pad = 15,
      thickness = 20,
      line = dict(color = "black", width = 0.5),
      label = ['household','industry','waste'],
      color = "blue"
    ),
    link = dict(
      source = [0,1,0,1], # indices correspond to labels, eg A1, A2, A2, B1, ...
      target = [2,2,2,2],
      value = [7190,2074,4483,74.50],
      label = ['aluminium','aluminium','copper','copper'],
      color = ['#d7d6d6','#d7d6d6','#f3cf07','#f3cf07']
  ))])
fig.update_layout(showlegend=True)
fig.show() 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python plotly sankey-diagram

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

当需要符号表达式时,SymPy 输出数值结果

我希望我的 SymPy 结果显示为精确结果而不是小数结果。我查看了 SymPy 文档,但找不到任何有用的信息。

为了说明问题,这里是一些示例代码:

from sympy import *
u = symbols("u")
integrate((1+u)**(1/2), (u, 0, 1))
Run Code Online (Sandbox Code Playgroud)

输出:

1.21895141649746
Run Code Online (Sandbox Code Playgroud)

预期结果:

(4/3)*sqrt(2)-(2/3)
Run Code Online (Sandbox Code Playgroud)

python sympy

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

如何使用 sympy 求生成函数的第 n 项?

我有一个有理函数:f(x) = P(x)/Q(x)。\n例如:

\n\n
f(x) = (5x + 3)/(1-x^2)\n
Run Code Online (Sandbox Code Playgroud)\n\n

因为 f(x) 是生成函数,所以可以写为:

\n\n
f(x) = a0 + a1*x + a2*x\xc2\xb2 + ... + a_n*x^n + ... = P(x)/Q(x)\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何使用 sympy 求生成函数的f(x)n 项(即a_n)?

\n\n

如果 Sympy 中没有这样的实现,我也很想知道这是否在其他包中实现,例如 Maxima。

\n\n

我很感激任何帮助。

\n

python math sympy maxima

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

如何结合配对图和三角形热图?

我正在尝试制作一个上三角相关矩阵,理想情况下我想叠加到下三角矩阵的另一张图片上。因此,我希望将蒙版颜色设置为无或透明(否则,如果它是白色的,我将无法叠加)...知道如何在seaborn中执行此操作吗?

这是我试图修改的图

编辑

这就是我想做的:使用数据框中的一组列,我想绘制这些列的配对图(下三角形)和相关图(上三角形)

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt


rs = np.random.RandomState(112358)
d1 = pd.DataFrame(data=rs.normal(size=(100, 10)), columns=[*'abcdefghij' ])

corr1 = d1.corr()
mask1 = np.tril(np.ones_like(corr1, dtype=bool))

fig, ax = plt.subplots(figsize=(11, 9))

sns.heatmap(corr1, mask=mask1, cmap='PRGn', vmax=.3, vmin=-.3,
            square=True, linewidths=.5, cbar_kws={"shrink": .85, "pad":-.01}, ax=ax)

def hide_current_axis(*args, **kwds):
    plt.gca().set_visible(False)

e = sns.pairplot(d1)

e.map_upper(hide_current_axis)

plt.show()
Run Code Online (Sandbox Code Playgroud)

这段代码当然可以工作,但它分别绘制了两个数字。

python matplotlib seaborn

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