‘lijst’-object heeft geen kenmerk ‘vorm’

hoe maak je een array naar numpy 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)

Ik krijg een foutmelding als

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

Dus ik denk dat ik mijn X moet converteren naar een numpy-array?


Antwoord 1, autoriteit 100%

Gebruik numpy.arrayom shapeattribuut.

>>> 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)

OPMERKINGX.shaperetourneert een tuple van 3 items voor de gegeven array; [n, T] = X.shapeverhoogt ValueError.


Antwoord 2, autoriteit 31%

Als alternatief kunt u np.shape(...)

. gebruiken

Bijvoorbeeld:

import numpy as np

a=[1,2,3]

en np.shape(a)geven een output van (3,)


Antwoord 3, autoriteit 16%

import numpy
X = numpy.array(the_big_nested_list_you_had)

Het gaat nog steeds niet doen wat je wilt; je hebt meer bugs, zoals proberen een driedimensionale vorm uit te pakken in twee doelvariabelen in test.


Antwoord 4, autoriteit 13%

Als u een lijst heeft, kunt u de vorm afdrukken alsof deze is geconverteerd naar een array

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

Antwoord 5, autoriteit 8%

lijstobject in python heeft geen ‘shape’-attribuut omdat ‘shape’ impliceert dat alle kolommen (of rijen) langs een bepaalde dimensie even lang zijn.

Stel dat lijstvariabele a de volgende eigenschappen heeft:

a = [[2, 3, 4]
[0, 1]
[87, 8, 1]]

het is onmogelijk om ‘vorm’ te definiëren voor variabele ‘a’.
Daarom kan ‘vorm’ alleen worden bepaald met ‘arrays’, bijvoorbeeld

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

Ik hoop dat deze uitleg deze vraag goed verduidelijkt.


Antwoord 6, autoriteit 5%

als het type list is, gebruik dan len(list) en len(list[0]) om de rij en kolom te krijgen.

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

len(l) wordt 2
len(l[0]) wordt 4


Antwoord 7

eerst moet je de numpy-bibliotheek importeren (raadpleeg de code voor het maken van een numpy-array)
shapegeeft alleen de uitvoer als de variabele attribuut is van numpy bibliotheek. Met andere woorden, het moet een np.array zijn of een andere datastructuur van numpy.
Bijv.

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

Other episodes