小编Ohm*_*Ohm的帖子

SymPy:从对角矩阵创建一个numpy函数,它采用numpy数组

基于我在这里找到的一个例子,我试图从使用的对角矩阵创建一个函数sumpy.diag

myM = Matrix([
[x1, 4, 4],
[4, x2, 4],
[4, 4, x3]])  
Run Code Online (Sandbox Code Playgroud)

这是使用此例程创建的,例如:

import sympy as sp
import numpy as np

x1 = sp.Symbol('x1')
x2 = sp.Symbol('x2')
x3 = sp.Symbol('x3')
X = sp.Matrix([x1, x2, x3])

myM = 4 * sp.ones(3, 3)
sp.diag(*X) + myM - sp.diag(*np.diag(myM))
Run Code Online (Sandbox Code Playgroud)

现在我将要创建一个函数,使用lambdifyufuncify,采用一个numpy.array或长度3(像np.array([0.1,0.2,0.3]))作为输入,并给出输出作为根据矩阵myM

myM = Matrix([
[0.1, 4, 4],
[4, 0.2, 4],
[4, 4, 0.3]])  
Run Code Online (Sandbox Code Playgroud)

最终我需要使用这种方法象征性地创建雅可比矩阵: 雅可比 并且由于函数形式可能在计算过程中发生变化,因此以符号方式计算雅可比矩阵将非常有用.

python numpy matrix symbolic-math sympy

11
推荐指数
2
解决办法
713
查看次数

将两个matplotlib imshow图设置为具有相同的颜色贴图比例

我试图绘制具有相同比例的字段.上面的图像值比下面的图像值高10倍,但它们在imshow中变成了相同的颜色.如何将两者设置为具有相同的颜色比例?

我添加了我正在使用的代码图像..

两个imshow情节

def show_field(field1,field2):
    fig = plt.figure()
    ax = fig.add_subplot(2, 1, 1)
    ax.imshow(field1,cmap=plt.cm.YlGn)
    ax.set_adjustable('box-forced')
    ax.autoscale(False)
    ax2 = fig.add_subplot(2, 1, 2)
    ax2.set_adjustable('box-forced')
    ax2.imshow(field2,cmap=plt.cm.YlGn)
    ax2.autoscale(False)
    plt.show()
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib colorbar imshow

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

使用SymPy codegen为方程组生成Fortran子例程

基于我在这里找到的前一个例子,我试图找出如何生成一个Fortran代码,该代码对应于我需要坚持的特定形式.所需的FORTRAN代码将如下所示(它基于FitzHugh-Nagumo模型):

  SUBROUTINE FF(NE,U,PAR,F) 
!     ---------- -- 
!     Define the nonlinear term

  IMPLICIT NONE
  INTEGER, INTENT(IN) :: NE
  DOUBLE PRECISION, INTENT(IN) :: U(NE),PAR(*)
  DOUBLE PRECISION, INTENT(OUT) :: F(NE)

  DOUBLE PRECISION u,v,e,a1,a0

    u=U(1)
    v=U(2)
    e=PAR(1)
    a1=PAR(2)
    a0=PAR(3)

    F(1)= u-u**3-v 
    F(2)= e*(u-a1*v-a0)

  END SUBROUTINE FF
Run Code Online (Sandbox Code Playgroud)

我设法在SymPy中创建正确的表达式,但我还没弄清楚如何生成所需的代码codegen.这是我到目前为止的尝试:

from sympy import symbols,latex
from sympy.utilities.codegen import codegen
from sympy.tensor import IndexedBase, Idx
from sympy import Matrix
U, PAR = symbols('U PAR', cls=IndexedBase)

u = U[1]
v = U[2]

e = …
Run Code Online (Sandbox Code Playgroud)

python code-generation sympy python-2.7 codegen

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

用Theano求解反应扩散系统

我是Theano的新手,我尝试实现反应扩散系统的数值积分器 - 此版本的FitzHugh-Nagumo模型:

在此输入图像描述

在此输入图像描述

现在我的表达是:

import theano as th
import theano.tensor as T

u = T.dmatrix('u')
v = T.dmatrix('v')
e = T.dscalar('e')
a0 = T.dscalar('a0')
a1 = T.dscalar('a1')

dudt = u - u**3 -v
dvdt = e*(u - a1*v - a0)
Run Code Online (Sandbox Code Playgroud)

所以我还没有实现有限差分拉普拉斯算子.我的问题是,在Theano中是否有一种聪明的方法可以做到这一点?

python scipy theano

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

在matplotlib上标记轮廓图中的特定级别

谁能给我一个如何在等高线图中标记特定等级的例子?我想标记该图中黑线的水平:

我要标记关卡的轮廓图

我使用以下代码:

plt.figure()

CS = plt.contour(X, Y,log_mu,levels = [np.log10(5e-8),np.log10(9e-5)])
CS = plt.contourf(X, Y,log_mu)
CB = plt.colorbar(CS, shrink=0.8, extend='both')

plt.xscale('log')
plt.yscale('log')

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

并且可以在此获得该特定图的数据,用于等高线图的dpaste数据

python matplotlib contour

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

安装Spyder在Ubuntu 14.04上使用Anaconda python

我在安装Anaconda之前安装了Spyder IDE(在Ubuntu 14.04上),当我键入终端时,python我有anaconda python,我可以导入它的所有软件包.但是在Spyder上我仍然有原始的python,我无法导入Anaconda软件包,我怎样才能设置Spyder使用Anaconda python?

python python-2.7 spyder anaconda

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

Pandas:重新采样数据帧以匹配不同数据帧的 DatetimeIndex

我有两个单独的时间序列pandas.dataframe,第一个 -series1条目较少,起始数据时间与第二个不同 - series2

index1 = pd.date_range(start='2020-06-16 23:16:00', end='2020-06-16 23:40:30', freq='1T')
series1 = pd.Series(range(len(index1)), index=index1)
index2 = pd.date_range('2020-06-16 23:15:00', end='2020-06-16 23:50:30', freq='30S')
series2 = pd.Series(range(len(index2)), index=index2)
Run Code Online (Sandbox Code Playgroud)

我怎样才能重采样系列2匹配DatetimeIndexseries1

python time-series resampling pandas pandas-resample

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

使用PyPlot的Julia错误 - 信号(11):分段错误

学习使用PyPlot和Julia编程语言(版本0.4.5),我在尝试生成一个简单的情节时遇到了错误:

julia> using PyPlot

julia> x = linspace(0,100,1000)
linspace(0.0,100.0,1000)

julia> y = x.^2;

julia> plot(x,y)

signal (11): Segmentation fault
unknown function (ip: 0x32736)
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

有人知道这里发生了什么吗?

julia

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

在 Python 中将 LaTex 表读入数组

对于Python初学者来说,我有一个艰巨的任务,我需要从用LaTex编写的源文件导入一个表。我想我会使用表的名称作为标识符,然后从表的开头到结尾逐行写入数组。完成这项工作的“自然”方式是什么?

python import latex file

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

Numpy方法为绘图排序一个凌乱的数组

我有两个数组的绘图数据以未分类的方式存储,因此绘图不连续地从一个地方跳到另一个地方: 在此输入图像描述 我试过一个在2D数组中找到最近点的例子:

import numpy as np

def distance(pt_1, pt_2):
    pt_1 = np.array((pt_1[0], pt_1[1]))
    pt_2 = np.array((pt_2[0], pt_2[1]))
    return np.linalg.norm(pt_1-pt_2)

def closest_node(node, nodes):
    nodes = np.asarray(nodes)
    dist_2 = np.sum((nodes - node)**2, axis=1)
    return np.argmin(dist_2)

a = []
for x in range(50000):
    a.append((np.random.randint(0,1000),np.random.randint(0,1000)))
some_pt = (1, 2)

closest_node(some_pt, a)
Run Code Online (Sandbox Code Playgroud)

我能以某种方式使用它来"清理"我的数据吗?(在上面的代码中,a可以是我的数据)

我计算的示例数据是:

array([[  2.08937872e+001,   1.99020033e+001,   2.28260611e+001,
          6.27711094e+000,   3.30392288e+000,   1.30312878e+001,
          8.80768833e+000,   1.31238275e+001,   1.57400130e+001,
          5.00278061e+000,   1.70752624e+001,   1.79131456e+001,
          1.50746185e+001,   2.50095731e+001,   2.15895974e+001,
          1.23237801e+001,   1.14860312e+001,   1.44268222e+001,
          6.37680265e+000,   7.81485403e+000],
       [ -1.19702178e-001,  -1.14050879e-001,  -1.29711421e-001,
          8.32977493e-001,   7.27437322e-001, …
Run Code Online (Sandbox Code Playgroud)

python arrays sorting numpy matplotlib

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