繁体   English   中英

如何在 python 中填充符号 N-dim 零数组?

[英]How do I fill a symbolic N-dim zero array in python?

我已经初始化了以下数组:

ChristSymb=sym.Array(np.zeros((d,d,d),dtype=int))

我一直在尝试使用for循环用符号表达式填充它,但编译后出现以下错误

TypeError: immutable N-dim array

无法修改的数组定义有什么问题? 我该如何解决?

这是因为sym.Array实际上是ImmutableDenseNDimArray的缩写。 此信息可在文档中找到。 您需要做的是使用名为MutableDenseNDimArray的可变版本 class,如下所示:

import sympy as sym
import numpy as np

ChristSymb = sym.MutableDenseNDimArray(np.zeros((d, d, d), dtype=int))

ArrayImmutableDenseNDimArray的缩写。 不可变意味着一旦定义了数组,它的组成元素就不能改变。

您可以使用以下方法之一创建一个可变的零数组:

In [2]: MutableDenseNDimArray.zeros(3,3,3)
Out[2]: [[[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]

这将创建一个可变的零数组(请注意,您不需要NumPy ,因为SymPy也具有zeros(...)函数)。

否则,将不可变数组转换为可变数组:

In [3]: Array.zeros(3,3,3).as_mutable()
Out[3]: [[[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM