web-dev-qa-db-de.com

'list'-Objekt hat kein Attribut' Form '

wie erstelle ich ein Array mit einem Array?

def test(X, N):
    [n,T] = X.shape
    print "n : ", n
    print "T : ", T



if __name__=="__main__":

    X = [[[-9.035250067710876], [7.453250169754028], [33.34074878692627]], [[-6.63700008392334], [5.132999956607819], [31.66075038909912]], [[-5.1272499561309814], [8.251499891281128], [30.925999641418457]]]
    N = 200
    test(X, N)

Ich bekomme Fehler als 

AttributeError: 'list' object has no attribute 'shape'

Ich denke, ich muss mein X in ein numpy-Array konvertieren?

36
sam

Verwenden Sie numpy.array , um das shape-Attribut zu verwenden.

>>> import numpy as np
>>> X = np.array([
...     [[-9.035250067710876], [7.453250169754028], [33.34074878692627]],
...     [[-6.63700008392334], [5.132999956607819], [31.66075038909912]],
...     [[-5.1272499561309814], [8.251499891281128], [30.925999641418457]]
... ])
>>> X.shape
(3L, 3L, 1L)

NOTEX.shape gibt 3-Elemente-Tuple für das angegebene Array zurück. [n, T] = X.shape erhöht ValueError.

44
falsetru

Alternativ können Sie np.shape(...) verwenden.

Zum Beispiel:

import numpy as np

a=[1,2,3]

und np.shape(a) gibt eine Ausgabe von (3,) aus

11
Ludwig Zhou
import numpy
X = numpy.array(the_big_nested_list_you_had)

Es wird immer noch nicht das tun, was du willst; Sie haben mehr Fehler, zum Beispiel den Versuch, eine dreidimensionale Form in zwei Zielvariablen in test zu entpacken.

10
user2357112

das Listenobjekt in Python hat kein 'shape'-Attribut, da' shape 'impliziert, dass alle Spalten (oder Zeilen) entlang einer bestimmten Dimension gleich lang sind. 

Nehmen wir an, die Listenvariable a hat folgende Eigenschaften: a = [[2, 3, 4] [0, 1] [87, 8, 1]]

es ist nicht möglich, "Form" für die Variable "a" ..__ zu definieren. Deshalb kann "Form" möglicherweise nur mit "Arrays" bestimmt werden, z.

b = numpy.array([[2, 3, 4]
                [0, 1, 22]
                [87, 8, 1]])

Ich hoffe, diese Erklärung erklärt diese Frage gut.

4
Yura Vasiliuk

wenn der Typ list ist, verwenden Sie len (list) und len (list [0]), um die Zeile und Spalte abzurufen.

l = [[1,2,3,4], [0,1,3,4]]

len (l) wird 2 sein. len (l [0]) wird 4 sein

2
ZHX

Wenn Sie über eine Liste verfügen, können Sie die Form so drucken, als wäre sie in ein Array umgewandelt

import numpy as np
print(np.asarray(X).shape)
2
max

zuerst müssen Sie die numpy-Bibliothek importieren (beziehen Sie sich auf den Code, um ein numpy-Array zu erstellen) shape gibt die Ausgabe nur aus, wenn die Variable das Attribut der numpy-Bibliothek ist numpy . ZB.

`>>> import numpy
>>> a=numpy.array([[1,1],[1,1]])
>>> a.shape
(2, 2)`
0
yunus