2009-12-27 20 views

cevap

236

kullanın tolist(): Bu onlar ne olursa olsun numpy tipi değerleri dönüştürür olduğunu

import numpy as np 
>>> np.array([[1,2,3],[4,5,6]]).tolist() 
[[1, 2, 3], [4, 5, 6]] 

Not (örn np.int32 veya np.float32) (listede) "en yakın uyumlu Python türü" . Sayısal veri türlerini korumak istiyorsanız, dizininizde liste() öğesini çağırabilirsiniz ve bir numpy scalars listesiyle sonuçlanırsınız. (Yorumunda işaret için Mr_and_Mrs_D teşekkürler.)

+0

Eğer listeniz float32 'tolist 'ise' floats '- dönüştürecekse, bu muhtemelen istenmez. 'List (myarray) 'ın kullanılması bundan muzdarip değildir - neden' listeyi 'tercih etmeliyiz? –

+0

@Mr_and_Mrs_D, dizininizde yüzdürme olmasına rağmen, sonuç listesinin tam sayılara sahip olmasını ister misiniz? Bu tamamen farklı bir soru ... ve elbette float32 değerlerine rağmen, hepsi ayrılmaz olacaklarını belirtmelisiniz. Her neyse, eğer bu duruma sahip olsaydınız, sanırım 'myarray.astype (np.int32) .tolist()' i yapmak bir seçenek olur ve başarmaya çalıştığınız şey hakkında açık olur. (Ve son olarak, 'list (array_of_type_float32) 'ben denediğimde burada tamsayı vermez ... bu yüzden ne sorduğunuzu bilmiyorum.) –

+0

Ben tamsayılardan bahsetmedim - denemek float32_array = np.array ([0.51764709], np.float32); baskı (float32_array.tolist()); print (list (float32_array)) ' –

37

NumPy diziler var bir tolist method:

In [1]: arr=np.array([[1,2,3],[4,5,6]]) 

In [2]: arr.tolist() 
Out[2]: [[1, 2, 3], [4, 5, 6]] 
3

numpy dizi şekil 2D ise numpy .tolist yöntemi iç içe diziler üretir. Düz listeler isteniyorsa aşağıdaki yöntem işe yararsa

.
import numpy as np 
from itertools import chain 

a = [1,2,3,4,5,6,7,8,9] 
print type(a), len(a), a 
npa = np.asarray(a) 
print type(npa), npa.shape, "\n", npa 
npa = npa.reshape((3, 3)) 
print type(npa), npa.shape, "\n", npa 
a = list(chain.from_iterable(npa)) 
print type(a), len(a), a` 
İlgili konular