Python Sage 中的属性错误

AttributeError in Python Sage

非常抱歉打扰您的 AttributeError,但我无法弄清楚我的代码有什么问题。

我的目标是能够通过此处未列出的某些函数访问 C 矩阵的元素。但要做到这一点,我想我必须将矩阵转换为字符串。

from sage.all import *
import numpy as np
import random
import sage.all

def __NewTable__(C):
    A=np.array_str(C)
    word=""
    MS=[]
    for letter in A:
        if letter==')':
            word=''.join(letter)
            MS.append(word)
            word=""
        else:
            word=''.join(letter)
    return MS

length=int(raw_input("Give length of linear code"))
dimention=int(raw_input("Give the dimention"))
FF=int(raw_input("Give the finite field in which you want to work in"))
C = codes.ReedSolomonCode(length, dimention, GF(FF, "x"))
MS=__NewTable__(C)
print MS

给出参数(长度、尺寸、FF)后出现以下错误

A​​ttributeError: 'LinearCode_with_category' 对象没有属性 'shape'

计算 np.array_str(C) 时引发 AttributeError 异常。 事实上,np.array_str 是一个将 numpy 数组转换为字符串的函数,因此 np.array_str(C) 首先试图弄清楚它的参数 C 的形状(预期是一个 numpy 数组),但在您的用例中 C 不是 numpy 数组并且没有 shape.

一种解决方法是编写

A = np.array_str(np.array(C.list()))

或者你可以摆脱 numpy 并只使用

A = str(C.list())

然后你不需要导入 numpy。

获得更好帮助的提示:

综上所述,启动SageMath并定义__NewTable__如下:

def __NewTable__(C):
    A = str(C.list())
    word = ""
    MS = []
    for letter in A:
        if letter == ')':
            word = ''.join(letter)
            MS.append(word)
            word = ""
        else:
            word = ''.join(letter)
    return MS

以下是该功能的工作原理:

sage: C = codes.ReedSolomonCode(4, 3, GF(5, "x"))
sage: MS = __NewTable__(C)
sage: print MS
[')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')', ')']

不确定这是否真的是您想要的,但至少 AttributeError 已经消失,您可以从这里拿走它。不要犹豫,告诉我们结果如何。