Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 矩阵的次幂_Python_Arrays_Numpy_Attributes - Fatal编程技术网

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没有否决权。可能是编辑后有人来了。