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)后出现以下错误
AttributeError: '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。
获得更好帮助的提示:
- 通过陈述你想要实现的目标来开始你的问题
- 提供一个minimal, complete, and verifiable example
- 特别跳过互动部分(
raw_input
)
综上所述,启动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
已经消失,您可以从这里拿走它。不要犹豫,告诉我们结果如何。
非常抱歉打扰您的 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_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。
获得更好帮助的提示:
- 通过陈述你想要实现的目标来开始你的问题
- 提供一个minimal, complete, and verifiable example
- 特别跳过互动部分(
raw_input
)
综上所述,启动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
已经消失,您可以从这里拿走它。不要犹豫,告诉我们结果如何。