1

行列のマイナーを計算する関数を書いています

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'

なぜ私がそれを手に入れたのか誰か知っていますか?

4

4 に答える 4

1

.shapenumpy 配列の属性ですが、Python リストに適用します。arr.shape[0](およびarr.shape[1]、それぞれ) を、関心のあるリストのディメンション (iまたは、この場合は) に置き換えることができjます。

values_floatまたは、次のように、リストから numpy 配列を初期化できます。

am = numpy.array(values_float, dtype=float)
于 2013-05-10T09:27:28.660 に答える
0

arr は 2 次元配列ですか? numpy がない場合は、次のようにマイナーを計算できます。

def minor(arr, i, j):
    minor = [row[:j] + row[j+1:] for row in (arr[:i] + arr[i+1:])]
    return minor
于 2016-10-05T16:18:25.163 に答える
0

一般に、このエラーの考えられる原因は次のとおりです。

クラスMyClassで、クラスのインスタンスの__init__()属性を定義します。attr何らかの方法で、この属性にアクセスしたいとします。タイプ のオブジェクトでこのメソッドを呼び出しMyClassますmyObj。しかし、myObj.attr を実行する代わりに、 を呼び出していMyClass.attrます。あなたのクラスには属性がありません。クラスのインスタンスが行います。

あなたの場合、配列shapeの属性ですが、入力オブジェクトはリストです。numpy

于 2013-05-10T09:24:48.387 に答える