Python 矩阵的次幂
我写的是计算矩阵次幂的函数Python 矩阵的次幂,python,arrays,numpy,attributes,Python,Arrays,Numpy,Attributes,我写的是计算矩阵次幂的函数 def minor(arr,i,j): return arr[np.array(range(i)+range(i+1,arr.shape[0]))[:,np.newaxis], np.array(range(j)+range(j+1,arr.shape[1]))] 然后将其应用于我初始化的数组: for row in values_float: for item in row: am[p][k] =
def minor(arr,i,j):
return arr[np.array(range(i)+range(i+1,arr.shape[0]))[:,np.newaxis],
np.array(range(j)+range(j+1,arr.shape[1]))]
然后将其应用于我初始化的数组:
for row in values_float:
for item in row:
am[p][k] = item
但我有一个错误:
AttributeError: 'list' object has no attribute 'shape'
有人知道我为什么得到它吗?一般来说,这是一个可能的错误来源: 在类
MyClass
中,在\uuuu init\uuuu()
中,为类的实例定义属性attr
。在某些方法中,您希望访问此属性。对类型为MyClass
的对象调用此方法,例如myObj
。但是您没有执行myObj.attr,而是调用MyClass.attr
。您的类没有属性。类的实例不需要
在您的例子中,
shape
是numpy
数组的一个属性,而您的输入对象是一个列表。。shape
是numpy数组的一个属性,而您将它应用于Python列表。您可以将arr.shape[0]
(和arr.shape[1]
)替换为您感兴趣的列表维度(i
或j
)
或者,您可以从值\u float
列表中初始化numpy数组,如下所示:
am = numpy.array(values_float, dtype=float)
我认为在numpy中初始化数组的最好方法是使用numpy.ndarray或numpy.zeros,而不是使用初始化列表的方式和方法
arr是二维阵列吗?如果你没有numpy,你可以这样计算小调:
def minor(arr, i, j):
minor = [row[:j] + row[j+1:] for row in (arr[:i] + arr[i+1:])]
return minor
@刘波夫不明白为什么这被否决了。从您最初解释的情况来看,我的一般回答很可能是导致此属性错误的原因。没有更多的代码(在我发帖的时候),这就像一个猜测。在你添加代码后我进行了编辑。否决票不可能来自OP,因为OP没有否决权。可能是编辑后有人来了。