python3的sympy

python3的sympy,第1张

print(“字符串”),5/2和5//2的结果是不同的5/2为25,5//2为2

python2需要导入from_future_import division执行普通的除法。

1/2和1//2的结果05和0

%号为取模运算。

乘方运算为23,-23和-(23)是等价的。

from sympy import导入库

x,y,z=symbols('x y z'),定义变量

init_printing(use_unicode=True)设置打印方式。

python的内部常量有pi,

函数simplify,simplify(sin(x)2 + cos(x)2)化简结果为1,

simplify((x3 + x2 - x - 1)/(x2 + 2x + 1))化简结果为x-1。化简伽马函数。simplify(gamma(x)/gamma(x - 2))得(x-2)(x-1)。

expand((x + 1)2)展开多项式。

expand((x + 1)(x - 2) - (x - 1)x)

因式分解。factor(x2z + 4xyz + 4y2z)得到z(x + 2y)2

from_future_import division

x,y,z,t=symbols('x y z t')定义变量,

k, m, n = symbols('k m n', integer=True)定义三个整数变量。

f, g, h = symbols('f g h', cls=Function)定义的类型为函数。

factor_list(x2z + 4xyz + 4y2z)得到一个列表,表示因式的幂,(1, [(z, 1), (x + 2y, 2)])

expand((cos(x) + sin(x))2)展开多项式。

expr = xy + x - 3 + 2x2 - zx2 + x3,collected_expr = collect(expr, x)将x合并。将x元素按阶次整合。

collected_exprcoeff(x, 2)直接取出变量collected_expr的x的二次幂的系数。

cancel()is more efficient thanfactor()

cancel((x2 + 2x + 1)/(x2 + x))

,expr = (xy2 - 2xyz + xz2 + y2 - 2yz + z2)/(x2 - 1),cancel(expr)

expr = (4x3 + 21x2 + 10x + 12)/(x4 + 5x3 + 5x2 + 4x),apart(expr)

asin(1)

trigsimp(sin(x)2 + cos(x)2)三角函数表达式化简,

trigsimp(sin(x)4 - 2cos(x)2sin(x)2 + cos(x)4)

trigsimp(sin(x)tan(x)/sec(x))

trigsimp(cosh(x)2 + sinh(x)2)双曲函数。

三角函数展开,expand_trig(sin(x + y)),acos(x),cos(acos(x)),expand_trig(tan(2x))

x, y = symbols('x y', positive=True)正数,a, b = symbols('a b', real=True)实数,z, t, c = symbols('z t c')定义变量的方法。

sqrt(x) == xRational(1, 2)判断是否相等。

powsimp(xaxb)幂函数的乘法,不同幂的乘法,必须先定义a和b。powsimp(xaya)相同幂的乘法。

powsimp(tczc),注意,powsimp()refuses to do the simplification if it is not valid

powsimp(tczc, force=True)这样的话就可以得到化简过的式子。声明强制进行化简。

(zt)2,sqrt(xy)

第一个展开expand_power_exp(x(a + b)),expand_power_base((xy)a)展开,

expand_power_base((zt)c, force=True)强制展开。

powdenest((xa)b),powdenest((za)b),powdenest((za)b, force=True)

ln(x),x, y ,z= symbols('x y z', positive=True),n = symbols('n', real=True),

expand_log(log(xy))展开为log(x) + log(y),但是python3没有。这是因为需要将x定义为positive。这是必须的,否则不会被展开。expand_log(log(x/y)),expand_log(log(xn))

As withpowsimp()andpowdenest(),expand_log()has aforceoption that can be used to ignore assumptions。

expand_log(log(z2), force=True),强制展开。

logcombine(log(x) + log(y)),logcombine(nlog(x)),logcombine(nlog(z), force=True)。

factorial(n)阶乘,binomial(n, k)等于c(n,k),gamma(z)伽马函数。

hyper([1, 2], [3], z),

tan(x)rewrite(sin)得到用正弦表示的正切。factorial(x)rewrite(gamma)用伽马函数重写阶乘。

expand_func(gamma(x + 3))得到,x(x + 1)(x + 2)gamma(x),

hyperexpand(hyper([1, 1], [2], z)),

combsimp(factorial(n)/factorial(n - 3))化简,combsimp(binomial(n+1, k+1)/binomial(n, k))化简。combsimp(gamma(x)gamma(1 - x))

自定义函数

def list_to_frac(l):

expr = Integer(0)

for i in reversed(l[1:]):

expr += i

expr = 1/expr

return l[0] + expr

list_to_frac([x, y, z])结果为x + 1/z,这个结果是错误的。

syms = symbols('a0:5'),定义syms,得到的结果为(a0, a1, a2, a3, a4)。

这样也可以a0, a1, a2, a3, a4 = syms, 可能是我的 *** 作错误 。发现python和自动缩进有关,所以一定看好自动缩进的距离。list_to_frac([1, 2, 3, 4])结果为43/30。

使用cancel可以将生成的分式化简,frac = cancel(frac)化简为一个分数线的分式。

(a0a1a2a3a4 + a0a1a2 + a0a1a4 + a0a3a4 + a0 + a2a3a4 + a2 + a4)/(a1a2a3a4 + a1a2 + a1a4 + a3a4 + 1)

a0, a1, a2, a3, a4 = syms定义a0到a4,frac = apart(frac, a0)可将a0提出来。frac=1/(frac-a0)将a0去掉取倒。frac = apart(frac, a1)提出a1。

help("modules"),模块的含义,help("modules yourstr")模块中包含的字符串的意思。,

help("topics"),import ospath + help("ospath"),help("list"),help("open")

# -- coding: UTF-8 --声明之后就可以在ide中使用中文注释。

定义

l = list(symbols('a0:5'))定义列表得到[a0, a1, a2, a3, a4]

fromsympyimport

x,y,z=symbols('x y z')

init_printing(use_unicode=True)

diff(cos(x),x)求导。diff(exp(x2), x),diff(x4, x, x, x)和diff(x4, x, 3)等价。

diff(expr, x, y, 2, z, 4)求出表达式的y的2阶,z的4阶,x的1阶导数。和diff(expr, x, y, y, z, 4)等价。exprdiff(x, y, y, z, 4)一步到位。deriv = Derivative(expr, x, y, y, z, 4)求偏导。但是不显示。之后用derivdoit()即可显示

integrate(cos(x), x)积分。定积分integrate(exp(-x), (x, 0, oo))无穷大用2个oo表示。integrate(exp(-x2-y2),(x,-oo,oo),(y,-oo,oo))二重积分。print(expr)print的使用。

expr = Integral(log(x)2, x),exprdoit()积分得到xlog(x)2 - 2xlog(x) + 2x。

  integdoit()和integ = Integral((x4 + x2exp(x) - x2 - 2xexp(x) - 2x -

exp(x))exp(x)/((x - 1)2(x + 1)2(exp(x) + 1)), x)连用。

limit(sin(x)/x,x,0),not-a-number表示nan算不出来,limit(expr, x, oo),,expr = Limit((cos(x) - 1)/x, x, 0),exprdoit()连用。左右极限limit(1/x, x, 0, '+'),limit(1/x, x, 0, '-')。。

Series Expansion级数展开。expr = exp(sin(x)),exprseries(x, 0, 4)得到1 + x + x2/2 + O(x4),,xO(1)得到O(x),,exprseries(x, 0, 4)removeO()将无穷小移除。exp(x-6)series(x,x0=6),,得到

-5 + (x - 6)2/2 + (x - 6)3/6 + (x - 6)4/24 + (x - 6)5/120 + x + O((x - 6)6, (x, 6))最高到5阶。

f=Function('f')定义函数变量和h=Symbol('h')和d2fdx2=f(x)diff(x,2)求2阶,,as_finite_diff(dfdx)函数和as_finite_diff(d2fdx2,[-3h,-h,2h]),,x_list=[-3,1,2]和y_list=symbols('a b c')和apply_finite_diff(1,x_list,y_list,0)。

Eq(x, y),,solveset(Eq(x2, 1), x)解出来x,当二式相等。和solveset(Eq(x2 - 1, 0), x)等价。solveset(x2 - 1, x)

solveset(x2 - x, x)解,solveset(x - x, x, domain=SReals)解出来定义域。solveset(exp(x), x)    # No solution exists解出EmptySet()表示空集。

等式形式linsolve([x + y + z - 1, x + y + 2z - 3 ], (x, y, z))和矩阵法linsolve(Matrix(([1, 1, 1, 1], [1, 1, 2, 3])), (x, y, z))得到{(-y - 1, y, 2)}

Ax = b 形式,M=Matrix(((1,1,1,1),(1,1,2,3))),system=A,b=M[:,:-1],M[:,-1],linsolve(system,x,y,z),,solveset(x3 - 6x2 + 9x, x)解多项式。roots(x3 - 6x2 + 9x, x),得出,{3: 2, 0: 1},有2个3的重根,1个0根。solve([xy - 1, x - 2], x, y)解出坐标。

f, g = symbols('f g', cls=Function)函数的定义,解微分方程diffeq = Eq(f(x)diff(x, x) - 2f(x)diff(x) + f(x), sin(x))再和dsolve(diffeq,f(x))结合。得到Eq(f(x), (C1 + C2x)exp(x) + cos(x)/2),dsolve(f(x)diff(x)(1 - sin(f(x))), f(x))解出来Eq(f(x) + cos(f(x)), C1),,

Matrix([[1,-1],[3,4],[0,2]]),,Matrix([1, 2, 3])列表示。M=Matrix([[1,2,3],[3,2,1]])

N=Matrix([0,1,1])

MN符合矩阵的乘法。Mshape显示矩阵的行列数。

Mrow(0)获取M的第0行。Mcol(-1)获取倒数第一列。

Mcol_del(0)删掉第1列。Mrow_del(1)删除第二行,序列是从0开始的。M = Mrow_insert(1, Matrix([[0, 4]]))插入第二行,,M = Mcol_insert(0, Matrix([1, -2]))插入第一列。

M+N矩阵相加,MN,3M,M2,M-1,N-1表示求逆。MT求转置。

eye(3)单位。zeros(2, 3),0矩阵,ones(3, 2)全1,diag(1, 2, 3)对角矩阵。diag(-1, ones(2, 2), Matrix([5, 7, 5]))生成Matrix([

[-1, 0, 0, 0],

[ 0, 1, 1, 0],

[ 0, 1, 1, 0],

[ 0, 0, 0, 5],

[ 0, 0, 0, 7],

[ 0, 0, 0, 5]])矩阵。

Matrix([[1, 0, 1], [2, -1, 3], [4, 3, 2]])

一行一行显示,,Mdet()求行列式。Mrref()矩阵化简。得到结果为Matrix([

[1, 0,  1,  3],

[0, 1, 2/3, 1/3],

[0, 0,  0,  0]]), [0, 1])。

M = Matrix([[1, 2, 3, 0, 0], [4, 10, 0, 0, 1]]),Mnullspace()

Columnspace

Mcolumnspace()和M = Matrix([[1, 2, 3, 0, 0], [4, 10, 0, 0, 1]])

M = Matrix([[3, -2,  4, -2], [5,  3, -3, -2], [5, -2,  2, -2], [5, -2, -3,  3]])和Meigenvals()得到{3: 1, -2: 1, 5: 2},,This means thatMhas eigenvalues -2, 3, and 5, and that the eigenvalues -2 and 3 have algebraic multiplicity 1 and that the eigenvalue 5 has algebraic multiplicity 2

P, D = Mdiagonalize(),P得Matrix([

[0, 1, 1,  0],

[1, 1, 1, -1],

[1, 1, 1,  0],

[1, 1, 0,  1]]),,D为Matrix([

[-2, 0, 0, 0],

[ 0, 3, 0, 0],

[ 0, 0, 5, 0],

[ 0, 0, 0, 5]])

PDP-1 == M返回为True。lamda = symbols('lamda')。

lamda = symbols('lamda')定义变量,p = Mcharpoly(lamda)和factor(p)

expr = x2 + xy,srepr(expr)可以将表达式说明计算法则,"Add(Pow(Symbol('x'), Integer(2)), Mul(Symbol('x'), Symbol('y')))"。。

x = symbols('x')和x = Symbol('x')是一样的。srepr(x2)得到"Pow(Symbol('x'), Integer(2))"。Pow(x, 2)和Mul(x, y)得到x2。xy

type(2)得到<class 'int'>,type(sympify(2))得到<class 'sympycorenumbersInteger'>srepr(xy)得到"Mul(Symbol('x'), Symbol('y'))"。。。

Add(Pow(x, 2), Mul(x, y))得到"Add(Mul(Integer(-1), Pow(Symbol('x'), Integer(2))), Mul(Rational(1, 2), sin(Mul(Symbol('x'), Symbol('y')))), Pow(Symbol('y'), Integer(-1)))"。。Pow函数为幂次。

expr = Add(x, x),exprfunc。。Integer(2)func,<class 'sympycorenumbersInteger'>,,Integer(0)func和Integer(-1)func,,,expr = 3y2x和exprfunc得到<class 'sympycoremulMul'>,,exprargs将表达式分解为得到(3, x, y2),,exprfunc(exprargs)合并。expr == exprfunc(exprargs)返回True。exprargs[2]得到y2,exprargs[1]得到x,exprargs[0]得到3。

exprargs[2]args得到(y, 2)。。yargs得到空括号。Integer(2)args得到空括号。

from sympy import

E(Ipi)+1,可以看出,I和E,pi已将在sympy内已定义。

x=Symbol('x'),,expand( E(Ix) )不能展开,expand(exp(Ix),complex=True)可以展开,得到Iexp(-im(x))sin(re(x)) + exp(-im(x))cos(re(x)),,x=Symbol("x",real=True)将x定义为实数。再展开expand(exp(Ix),complex=True)得到。Isin(x) + cos(x)。。

tmp = series(exp(Ix), x, 0, 10)和pprint(tmp)打印出来可读性好,print(tmp)可读性不好。。pprint将公式用更好看的格式打印出来,,pprint( series( cos(x), x, 0, 10) )

integrate(xsin(x), x),,定积分integrate(xsin(x), (x, 0, 2pi))。。

用双重积分求解球的体积。

x, y, r = symbols('x,y,r')和2 integrate(sqrt(rr-x2), (x, -r, r))计算球的体积。计算不来,是因为sympy不知道r是大于0的。r = symbols('r', positive=True)这样定义r即可。circle_area=2integrate(sqrt(r2-x2),(x,-r,r))得到。circle_area=circle_areasubs(r,sqrt(r2-x2))将r替换。

integrate(circle_area,(x,-r,r))再积分即可。

expressionsub([(x,y),(y,x)])又换到原来的状况了。

expressionsubs(x, y),,将算式中的x替换成y。。

expressionsubs({x:y,u:v}) : 使用字典进行多次替换。。

expressionsubs([(x,y),(u,v)]) : 使用列表进行多次替换。。

python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包。

计算矩阵对应行列的最大、最小值、和。

3>>>a1=mat([[1,1],[2,3],[4,2]])

>>> a1

matrix([[1, 1],

[2, 3],

[4, 2]])

计算每一列、行的和

>>>a2=a1sum(axis=0) #列和,这里得到的是12的矩阵

>>> a2

matrix([[7, 6]])

>>>a3=a1sum(axis=1) #行和,这里得到的是31的矩阵

>>> a3

matrix([[2],

[5],

[6]])

>>>a4=sum(a1[1,:]) #计算第一行所有列的和,这里得到的是一个数值

>>> a4

5 #第0行:1+1;第2行:2+3;第3行:4+2

计算最大、最小值和索引

>>>a1max() #计算a1矩阵中所有元素的最大值,这里得到的结果是一个数值

4

>>>a2=max(a1[:,1]) #计算第二列的最大值,这里得到的是一个11的矩阵

>>> a2

matrix([[3]])

>>>a1[1,:]max() #计算第二行的最大值,这里得到的是一个一个数值

3

>>>npmax(a1,0) #计算所有列的最大值,这里使用的是numpy中的max函数

matrix([[4, 3]])

>>>npmax(a1,1) #计算所有行的最大值,这里得到是一个矩阵

matrix([[1],

[3],

[4]])

>>>npargmax(a1,0) #计算所有列的最大值对应在该列中的索引

matrix([[2, 1]])

>>>npargmax(a1[1,:]) #计算第二行中最大值对应在该行的索引

1

Numpy可以使用reshape()函数进行矩阵重排列,默认按行排列(C语言风格),通过修改order参数可以改为按列排列(Fortran风格)。参考例子: In [1]: import numpy as npIn [2]: a = nparray([[1,2,3],[4,5,6]])In [3]: print a[[1 2 3] [4 5 6]]

不包括。python中的shape, shape[0], shape[1] 原创

2022-04-22 21:25:25

luv_camping 

码龄2年

关注

shape: 获取数组的形状

假设是一个二维数组

shape[0]: 获取数组的行数

shape[1]: 获取数组的列数

例:

import numpy as np

x = nparray([[1, 2, 3, 4],

[4, 3, 2, 1]])

print(xshape)

print(xshape[0])

print(xshape[1])

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

输出:

(2, 4)

2

4

1

2

3

1

2

3

文章知识点与官方知识档案匹配

Python入门技能树首页概览

221063 人正在系统学习中

点击阅读全文

打开CSDN APP,看更多技术内容

最新发布 python中 shape[0]和reshape(Xshape[0], -1)及Xreshape(Xshape[0], -1)T 的用法

python中 shape[0]和reshape(Xshape[0], -1)及Xreshape(Xshape[0], -1)T 的用法

继续访问

python: numpy--函数 shape用法

shape函数是numpycorefromnumeric中的函数,它的功能是查看矩阵或者数组的维数。 举例说明: 建立一个3×3的单位矩阵e, eshape为(3,3),表示3行3列 >>> e = eye(3) >>> e array([[ 1, 0, 0], [ 0, 1, 0], [ 0, 0, 1]]) >>> e

继续访问

Python中的shape[0]、shape[1]和shape[-1]分别是什么意思(附代码)

Python中的shape[0]、shape[1]和shape[-1]分别是什么意思(附代码)

继续访问

《手把手陪您学Python》49——数组的shape属性

在上一篇《手把手陪您学Python》48——数组的生成方法1中,我们学习了array()、arange()以及linspace()三种生成数组的方法,并且了解了数组是使用嵌套列表的方式进行表示的。 今天,我们将会学习数组的shape属性,并更深入地了解数组特别是多维数组的表示方式。 1、shape属性 数组的shape属性就如同它的名字一样,反映的是数组的“形状”。 对于一维数组,反映的是一个维度上的元素数量,类似“长度”; 对于二维数组,反映的是两个维度上分别的元素数量,类似“长度”和“宽度”;

继续访问

python的shape和reshape_一文浅显易懂:Python中shape()和reshape()的用法和区别

shape :英文翻译为 形状在矩阵中是读取矩阵的行数和列数的信息。reshape : 英语翻译为 重塑、改变…的形状在矩阵中是改变数组arr的矩阵形式。代码在Python36版本或者Pycharm上运行。1、shape的用法import numpy as npa = nparray([1,2,3,4,4,3,2,8]) #一维数组a1 = nparray([[1,2,3,4],[4,3

继续访问

pytorch: 获取 tensor 维度的方法:shape 和 size()

pycharm 获取 tensor 的方法有两种:shape 和 size() tensor 是类 Temsor() 的实例, 其中shape是其属性,而 size() 是其继承的方法,两者均可以获得 tensor 的维度。 import torch a = torchtensor([[1, 2, 3], [4, 5, 6]]) print(ashape) print(asize()) 输出为: torchSize([2, 3]) torchSize([2, 3]) 另外,还可以获取其中的某一

继续访问

python中shape用法

一维矩阵 二维矩阵 更详细讲解:Python里对于shape()的理解 Python里对于shape()的理解 (1)shape()含义 在笔者debug深度学习相关代码的时候,很容易出现shape()这样形式的东西,用来告知输出数据的形式,由于shape()里出现的数字数量不同,还经常有shape(?,64,512)这样的数据存在,因此上网查了一些信息,作出比较通俗易懂的解释: import numpy as np a = nparray([[[1,2,3],[4,5,6]]]) print(as

继续访问

热门推荐 Python numpy函数:shape用法

shape函数是numpycorefromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度。 shape的输入参数可以是一个整数(表示维度),也可以是一个矩阵。以下例子可能会好理解一些: (1)参数是一个数时,返回空: (2)参数是一维矩阵: (3)参数是二维矩阵: (4)直接用shape可以快速读取矩阵的形状

继续访问

python中shape[0]与shape[1]

import numpy as np k = npmatrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) print(npshape(k)) # 输出(3,4)表示矩阵为3行4列 print(kshape[0]) # shape[0]输出3,为矩阵的行数 print(kshape[1]) # 同理shape[1]输出列数

继续访问

python数据分析基础知识—shape()函数的使用

python数据分析 shape()函数

继续访问

python中shape的解释

关于python函数中shape的解释: shape包含在numpy库,是矩阵(ndarray)的属性,可以获取矩阵的形状(例如二维数组的行列),获取的结果是一个元组,因此相关代码如下: import numpy as np x = nparray([[1,2,3,4,5],[6,7,8,9,10],[10,9,8,7,6],[5,4,3]]) #输出数组的行和列数 print xshape

继续访问

Python中的shape()和reshape()

转载自:>

Python提供了一种简单而有效的方法来挑选矩阵中的不相邻的列,以组成新的矩阵。首先,需要使用NumPy库中的函数,该函数可以将矩阵中的每一行转换为一个一维数组。然后,可以使用NumPy库中的函数,将一维数组中的每一个元素提取出来,并将它们放入新的矩阵中。

比如,如果有一个3x3的矩阵,可以使用NumPy库中的函数将其转换为一个一维数组,然后使用NumPy库中的函数,将第一个元素提取出来,放入新的矩阵中,然后再提取第三个元素,放入新的矩阵中,以此类推,最终可以得到一个新的矩阵,它包含矩阵中不相邻的列。

此外,还可以使用NumPy库中的函数,将矩阵中的每一行转换为一个一维数组,然后使用NumPy库中的函数,将一维数组中的每一个元素提取出来,并将它们放入新的矩阵中,以此类推,最终可以得到一个新的矩阵,它包含矩阵中不相邻的列。

总之,Python提供了一种简单而有效的方法来挑选矩阵中的不相邻的列,以组成新的矩阵。使用NumPy库中的函数,可以将矩阵中的每一行转换为一个一维数组,然后使用NumPy库中的函数,将一维数组中的每一个元素提取出来,并将它们放入新的矩阵中,最终可以得到一个新的矩阵,它包含矩阵中不相邻的列

以上就是关于python3的sympy全部的内容,包括:python3的sympy、python的矩阵可以做什么、python numpy怎么按列获取数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9552936.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存