2012-04-27 9 views

答えて

68
>>> numpy.array([[1, 2], [3, 4]]) 
array([[1, 2], [3, 4]]) 
+3

REPLはかなり初心者の質問に減らし意味。 –

+8

これは、すべてのリストの長さが同じであるため、2D配列のリストのリストを自動的に変換します。あなたはそれをしない方法を知っていますか?すべてのリストが同じ長さであっても、リストを並べ替えますか?または、1D配列の1D配列の2D配列を変換することが可能です(効率的には、反復メソッドやPythonマップのものはありません) –

+3

サブリストのサイズが均等でないため、それが機能しない場合は、[the次の回答](http://stackoverflow.com/a/26224619/1449460)。 –

9

それは同じくらい簡単です:イグナシオバスケス - エイブラムスの答えは動作しませんよりも、リストのリストは、要素数の異なるリストを持っている場合

>>> lists = [[1, 2], [3, 4]] 
>>> np.array(lists) 
array([[1, 2], 
     [3, 4]]) 
76

1)アレイのアレイメイク:

x=[[1,2],[1,2,3],[1]] 
y=numpy.array([numpy.array(xi) for xi in x]) 
type(y) 
>>><type 'numpy.ndarray'> 
type(y[0]) 
>>><type 'numpy.ndarray'> 

2)リストのアレイ作る:最初の長さのリストが等しくなる)

x=[[1,2],[1,2,3],[1]] 
y=numpy.array(x) 
type(y) 
>>><type 'numpy.ndarray'> 
type(y[0]) 
>>><type 'list'> 

3の代わりに3つのオプションがあります。

x=[[1,2],[1,2,3],[1]] 
length = len(sorted(x,key=len, reverse=True)[0]) 
y=numpy.array([xi+[None]*(length-len(xi)) for xi in x]) 
y 
>>>array([[1, 2, None], 
>>>  [1, 2, 3], 
>>>  [1, None, None]], dtype=object) 
+7

ありがとう、ここに来ました。しばらくの間、numpyを使用していて、この動作が軽微であることがわかりました。このより一般的なケースを説明する時間をとってくれてありがとう。 –

+0

この回答は参考になりました! – alisa

15

これは、リストをNumpy配列に変換するGoogleのトップ検索であるため、次の4歳という質問にもかかわらず:それはサイコーシンプルだから

>>> x = [[1, 2], [1, 2, 3], [1]] 
>>> y = numpy.hstack(x) 
>>> print(y) 
[1 2 1 2 3 1] 

私が最初にこの方法でそれをやって考え、私は自分自身と非常に喜んでいました。しかし、リストの大きなリストでそれをタイミングした後、それがこれを行うには、実際に高速です:注

>>> y = numpy.concatenate([numpy.array(i) for i in x]) 
>>> print(y) 
[1 2 1 2 3 1] 

Bastiaanの回答#1 @単一の連続リストを作成していないこと、それゆえ私はconcatenateを追加しました。

とにかく... Numpyをうまく使用するには、hstackアプローチが好きです。

0

ここでも、N次元配列にNレベルでネストされたリストを変換する問題を検索した後、私は何も見つからなかったので、ここではその周りに私の方法があります:

import numpy as np 

new_array=np.array([[[coord for coord in xk] for xk in xj] for xj in xi], ndmin=3) #this case for N=3 
関連する問題