W poniższym kodzie buduję dane w postaci zagnieżdżonej listy. Po pętli for chciałbym umieścić ją w wielowymiarowej tablicy Numpy tak starannie, jak to tylko możliwe. Jednak gdy wykonuję konwersję tablicy na tym, wydaje się, że konwertuje ona tylko zewnętrzną listę do tablicy. Co gorsza, kiedy kontynuuję w dół, kończę z punktami danych jako kształt (100L,)
... więc tablicę list, gdzie każda lista jest moje dane (oczywiście chciałem (100,3)
). Próbowałem też oszukać przy pomocy numpy.asanyarray()
, ale nie mogę tego rozwiązać. Bardzo bym chciał, aby tablica 3d na mojej liście 3D była od początku dostępna. Jeśli nie, w jaki sposób mogę uzyskać tablicę list w tablicy 2d bez konieczności iteracji i konwersji wszystkich?Konwertowanie zagnieżdżonych list danych na wielowymiarowe tablice Numpy
Edytuj: Jestem również otwarty na lepszy sposób strukturyzacji danych od samego początku, jeśli ułatwia to przetwarzanie. Jednak nadchodzi port szeregowy i rozmiar nie jest znany wcześniej.
import numpy as np
import time
data = []
for _i in range(100): #build some list of lists
d = [np.random.rand(), np.random.rand(), np.random.rand()]
data.append([d,time.clock()])
dataArray = np.array(data) #now I have an array of lists of a list(of data) and a time
dataPoints = dataArray[:,0] #this is the data in an array of lists
Nie masz 3d zagnieżdżonej listy, masz mieszankę list i skalarów. data to lista, która zawiera obiekty, które wyglądają tak: [[0.434,0.34,0.22], 0.2]. To obiekt mieszany, więc numpy nie wiedziałby, co z nim zrobić. – Bitwise
Dotyczy to oryginalnego obiektu danych, dlatego nie byłem pewien, czy było to możliwe. Jednak obiekt dataPoints jest zbiorem list elementów pływających, które nie mogą wejść do tablicy 2d. – Matt