gpt4 book ai didi

python - sympy 的高级索引?

转载 作者:行者123 更新时间:2023-11-28 17:35:40 24 4
gpt4 key购买 nike

使用 numpy,我可以从具有整数列表的数组中选择任意一组项目:

>>> import numpy as np
>>> a = np.array([1,2,3])
>>> a[[0,2]]
array([1, 3])

这似乎不适用于 sympy 矩阵,因为代码:

>>> import sympy as sp
>>> b = sp.Matrix([1,2,3])
>>> b[[0,2]]

导致错误信息:

**Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/sympy/matrices/dense.py", line 94, in __getitem__
return self._mat[a2idx(key)]
File "/usr/lib/python2.7/dist-packages/sympy/matrices/matrices.py", line 4120, in a2idx
raise IndexError("Invalid index a[%r]" % (j, ))
IndexError: Invalid index a[[0, 2]]

我的问题是是否有办法在 sympy 中做到这一点?

最佳答案

你的ab并不代表相似的对象,实际上a是一个1x3“矩阵”(一行 3 列),即一个向量,而 b 是一个 3x1 矩阵(3 行,一列)。

>>> a
array([1, 2, 3])
>>> b
Matrix([
[1],
[2],
[3]])

numpy 等效项是 numpy.array([[1], [2], [3]]),而不是您的 a.

知道 b[[0,2]] 没有意义,因为您缺少其中一个维度的索引。如果只想选择第一行和第三行,需要指定第二个维度:

>>> b[[0, 2], :]
Matrix([
[1],
[3]])

注意:使用numpy,您可以按照您想要的方式访问3x1矩阵,它看起来简单numpy 更严格。

关于python - sympy 的高级索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30865933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com