Python中的AttributeError

Python中的AttributeError,python,attributeerror,sage,Python,Attributeerror,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 lette

我真的很抱歉用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)后,我得到以下错误


AttributeError:“LinearCode\u with_category”对象没有属性“shape”

在计算
np.array\u str(C)
时引发
AttributeError
异常。 实际上,
np.array\u str
是一个将numpy数组转换为字符串的函数,因此
np.array\u str(C)
首先尝试找出它的参数
C
(预期为numpy数组)的形状,但在您的用例中,
C
不是numpy数组,也没有
形状

一个解决办法是写

A = np.array_str(np.array(C.list()))
或者你可以摆脱numpy,直接使用

A = str(C.list())
然后你就不需要导入numpy了

获得更好帮助的提示:

  • 从陈述你想要实现的目标开始提问
  • 提供
  • 特别是跳过交互部分(
    raw\u input
总之,启动SageMath并定义
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
,如下所示:

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
不存在了,您可以从这里获取它。请毫不犹豫地告诉我们这是如何实现的。

在计算
np.array\u str(C)
时,会引发
AttributeError
异常。 实际上,
np.array\u str
是一个将numpy数组转换为字符串的函数,因此
np.array\u str(C)
首先尝试找出它的参数
C
(预期为numpy数组)的形状,但在您的用例中,
C
不是numpy数组,也没有
形状

一个解决办法是写

A = np.array_str(np.array(C.list()))
或者你可以摆脱numpy,直接使用

A = str(C.list())
然后你就不需要导入numpy了

获得更好帮助的提示:

  • 从陈述你想要实现的目标开始提问
  • 提供
  • 特别是跳过交互部分(
    raw\u input
总之,启动SageMath并定义
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
,如下所示:

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
不存在了,您可以从这里获取它。不要犹豫,让我们知道这是怎么回事。

什么是
GF
?它看起来没有定义,如果是的话,这对于找出哪里出了问题至关重要。为什么您希望能够在
ReedSolomonCode
上调用
np.array\u str
?@skywalker它是Galois字段,定义的一部分ReedSolomonCode@user2357112我只是想把C数组转换成一个字符串,这样我就可以操作它了。你忘了把numpy作为np导入。我还认为,了解您为l、d、FF测试提供了哪些输入会有所帮助。无论如何,
ReedSolomonCode
仍然不是Numpy可以操纵的数组
np.array\u str(C.list())
也不起作用。什么是
GF
?它看起来没有定义,如果是的话,这对于找出哪里出了问题至关重要。为什么您希望能够在
ReedSolomonCode
上调用
np.array\u str
?@skywalker它是Galois字段,定义的一部分ReedSolomonCode@user2357112我只是想把C数组转换成一个字符串,这样我就可以操作它了。你忘了把numpy作为np导入。我还认为,了解您为l、d、FF测试提供了哪些输入会有所帮助。无论如何,
ReedSolomonCode
仍然不是Numpy可以操纵的数组
np.array\u str(C.list())
也不起作用。非常感谢您的回答。这实际上是一位同事的代码,她没有注释,我几乎没有python经验。。是的,你的回答澄清了一些问题,但我还有一段路要走。祝您今天过得愉快!非常感谢你的回答。这实际上是一位同事的代码,她没有注释,我几乎没有python经验。。是的,你的回答澄清了一些问题,但我还有一段路要走。祝您今天过得愉快!