配列をnumpy配列に作成する方法は?
def test(X, N):
[n,T] = X.shape
print "n : ", n
print "T : ", T
if __name__=="__main__":
X = [[[-9.035250067710876], [7.453250169754028], [33.34074878692627]], [[-6.63700008392334], [5.132999956607819], [31.66075038909912]], [[-5.1272499561309814], [8.251499891281128], [30.925999641418457]]]
N = 200
test(X, N)
としてエラーが発生しています
AttributeError: 'list' object has no attribute 'shape'
だから、私はXをnumpy配列に変換する必要があると思いますか?
shape
属性を使用するには、 numpy.array
を使用します。
>>> import numpy as np
>>> X = np.array([
... [[-9.035250067710876], [7.453250169754028], [33.34074878692627]],
... [[-6.63700008392334], [5.132999956607819], [31.66075038909912]],
... [[-5.1272499561309814], [8.251499891281128], [30.925999641418457]]
... ])
>>> X.shape
(3L, 3L, 1L)
NOTEX.shape
は、指定された配列の3-items Tupleを返します。 [n, T] = X.shape
はValueError
を発生させます。
または、np.shape(...)
を使用できます
例えば:
import numpy as np
a=[1,2,3]
np.shape(a)
は(3,)
の出力を提供します
import numpy
X = numpy.array(the_big_nested_list_you_had)
それでも、あなたが望むことをするつもりはありません。 test
の2つのターゲット変数に3次元形状をアンパックしようとするなど、さらにバグがあります。
pythonのリストオブジェクトには 'shape'属性がありません。'shape 'は、すべての列(または行)が特定の次元に沿って等しい長さを持つことを意味するためです。
リスト変数aに次のプロパティがあるとします:a = [[2, 3, 4] [0, 1] [87, 8, 1]]
変数「a」に「形状」を定義することは不可能です。それが、「形状」が「配列」でのみ決定される理由です。
b = numpy.array([[2, 3, 4]
[0, 1, 22]
[87, 8, 1]])
この説明がこの質問を明確にすることを願っています。
リストがあれば、その形状を配列に変換するかのように印刷できます
import numpy as np
print(np.asarray(X).shape)
タイプがリストの場合、len(list)およびlen(list [0])を使用して行と列を取得します。
l = [[1,2,3,4], [0,1,3,4]]
len(l)は2になりますlen(l [0])は4になります
まず、numpyライブラリをインポートする必要があります(numpy配列を作成するためのコードを参照)shape
は、変数がnumpyライブラリの属性である場合にのみ出力を提供します。 numpyの。例えば。
`>>> import numpy
>>> a=numpy.array([[1,1],[1,1]])
>>> a.shape
(2, 2)`