2Dリストを2Dnumpy配列に変換する方法は?


83

私は次のような2Dリストを持っています

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

それを2次元のnumpy配列に変換したいと思います。次のようなメモリを割り当てずに実行できますか

numpy.zeros((3,3))

そしてそれに値を保存しますか?


@Donkopotamus、それは私による間違いでした...私はシーケンスを与えていました...私は同じことをしていましたが、エラーが発生しました。ここから同じコードを取得した後、問題がどこにあるかを確認しました...それで役に立ちます...オフコースここに投稿する前にドキュメントを確認します...フレンドリーなリマインダーをありがとう。
シャン

回答:


90

リストをに渡すだけnp.arrayです:

a = np.array(a)

この機会にdtype、デフォルトが希望どおりでない場合に設定することもできます。

a = np.array(a, dtype=...)

102
このソリューションは機能しません。Pythonリストの多数の配列を取得します。
user1816847 2016

45
@ user1816847これは、「サブ」リストの長さが異なる場合にのみ発生します(例:[[1,2]、[1,2]、[1,2,3]]。質問の例で機能します。
2017年

5
サブ配列の長さが同じでない場合、このソリューションではリストのnumpy配列のみが提供されます(つまり、内部リストはnumpy配列に変換されません)。2次元が可変の2D配列(行列)を持つことはできないため、これは完全に理にかなっています。
AHA 2017

2017年9月(Ubuntu 16.04 LTS)からありがとうございます。これが私が必要としていたものです。予想よりもはるかに簡単です。
SDsolar 2017

1
重要な答えは、@compieてくれてありがとう
iedmrc

2

フォームでPythonファイルにエクスポートされた大きなデータセットを使用しています

XVals1 = [.........] 
XVals2 = [.........] 

各リストの長さは同じです。私が使う

>>> a1 = np.array(SV.XVals1)

>>> a2 = np.array(SV.XVals2)

次に

>>> A = np.matrix([a1,a2])

ここでの「SV」とは
gocen

2

次のコードを使用するだけです

c = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
matrix([[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]])

それからそれはあなたに与えるでしょう

次のコードを使用して、マトリックスの形状と寸法を確認できます。

c.shape

c.ndim


2

np.array()unutbuが上で言ったことよりもさらに強力です。これを使用して、np配列のリストをより高次元の配列に変換することもできます。以下は簡単な例です。

aArray=np.array([1,1,1])

bArray=np.array([2,2,2])

aList=[aArray, bArray]

xArray=np.array(aList)

xArrayの形状は(2,3)で、標準のnp配列です。この操作により、ループプログラミングが回避されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.