Štandardne mám zoznamy (a zoznamy)dátová štruktúra (väčšina mojich funkcií vracia zoznam / zoznamy zoznamov). Ale teraz musím použiť niektoré Numpy funkcie. Musím previesť všetky zoznamy na numpy pole pred použitím akejkoľvek funkcie z numpy / scipy. Napríklad
>>>x= [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>>y= [ 1, 10, 20]
>>>dot(x,y)
#array([ 81, 174, 267])
>>>X_np=array(x)
>>>y_np=array(y)
>>>dot(x_np,y_np)
#array([ 81, 174, 267])
Ako v tomto prípade, bodka (x, y) a bodka (x_np, y_np) viedli k rovnakému výsledku, takže použitie zoznamu namiesto číselného poľa nerobí rozdiel .... ale platí to pre všetky funkcie numpy / scipy alebo I musím urobiť my_np_array= array(my_list)
predtým, ako zavoláte nejaké / všetky numpy / scipy funkcie?
odpovede:
3 pre odpoveď č. 1Takmer všetky numpy / scipy funkcie prevedú vstup na pole skôr, ako na ňom začnú pracovať. Ale prečo mi veríš? Skúste podľa toho, čo potrebujete, a uvidíte, či to funguje.
Výnimkou budú všetky funkcie, ktoré upravujú pole ako napr np.put
napríklad.
>>> np.put([1,2,3],[0,1],[2,1])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/numpy/core/fromnumeric.py", line 394, in put
return a.put(ind, v, mode)
AttributeError: "list" object has no attribute "put"