

numpy.arrayからなるListの、numpy.arrayへの変換について質問です。

下記の行列(test)があります。

[code]

    test = 
    [array([4.76175243, 5.35280132, 5.6358859 , 6.23928513, 6.75275935,
            6.82693267, 6.68472261, 5.93395087]),
     array([5.35280132, 5.6358859 , 6.23928513, 6.75275935, 6.82693267,
            6.68472261, 5.93395087, 5.73621779]),
     array([5.6358859 , 6.23928513, 6.75275935, 6.82693267, 6.68472261,
            5.93395087, 5.73621779, 5.22481018])]
    
[/code]

np.array(test)を行って、下記アウトプット. 1の配列（3, 8）を期待しているのですが、  
アウトプット.2(3, )となってしまいます。  
何が原因なのでしょうか？

アウトプット.1

[code]

    [array([[4.76175243, 5.35280132, 5.6358859 , 6.23928513, 6.75275935,
            6.82693267, 6.68472261, 5.93395087]),
     [5.35280132, 5.6358859 , 6.23928513, 6.75275935, 6.82693267,
            6.68472261, 5.93395087, 5.73621779]),
     [5.6358859 , 6.23928513, 6.75275935, 6.82693267, 6.68472261,
            5.93395087, 5.73621779, 5.22481018]])
    
[/code]

アウトプット.2

[code]

    array([array([4.76175243, 5.35280132, 5.6358859 , 6.23928513, 6.75275935,
           6.82693267, 6.68472261, 5.93395087]),
           array([5.35280132, 5.6358859 , 6.23928513, 6.75275935, 6.82693267,
           6.68472261, 5.93395087, 5.73621779]),
           array([5.6358859 , 6.23928513, 6.75275935, 6.82693267, 6.68472261,
           5.93395087, 5.73621779, 5.22481018])], dtype=object)
    
[/code]


CC BY-SA 4.0
2018-02-03T16:53:00.183
41440
2018-11-18T16:02:00.333
2018-10-17T10:39:18.660
19110
27267
question
python python3 array numpy
Listからnp.arrayによる変換について


pythonは、まだ始めたばかりなので、正確な事は書けませんが、、、

> アウトプット.1  
>  こちらは、そもそも カッコ()の組み合わせが一致していません。

また、定義のコードを見ると、結果的には、 (3,8) の配列かも知れませんが、形式はジャグ配列になっているので、 "アウトプット.2"
になるのは当然と思いますが、どうでしょうか?

追記、 上記の例は、配列の配列。従って 単純な2次元配列とはちょっと違います。


CC BY-SA 3.0
2018-02-04T09:55:31.143
41453
2018-02-08T11:42:08.213
2018-02-08T11:42:08.213
41440
answer


`np.array` は「Python の生のリストを NumPy array に変換する」ものなので、「NumPy array
のリスト」を変換すると「NumPy array の NumPy array」になります。

NumPy array のリストを 2 次元の NumPy array
に変換したい場合、[`np.stack`](https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.stack.html)
が使えます。

[code]

    >>> test = [np.array([1, 2, 3, 4]),
    ...         np.array([5, 6, 7, 8]),
    ...         np.array([9, 10, 11, 12])]
    >>> arr = np.stack(test)
    >>> arr
    array([[ 1,  2,  3,  4],
           [ 5,  6,  7,  8],
           [ 9, 10, 11, 12]])
    
[/code]


CC BY-SA 4.0
2018-10-17T10:37:50.907
49384
2018-10-17T10:37:50.907
19110
41440
answer