

以下のようなコードを記述しました。

`dy[0][0:1]` ではリストの最初の数値が取り出せませんでしたので、`dy_sum` で一回形を整え、`dy_sum[0:1]`
でリストの最初の数値が取り出せますが、なぜか `dx` についは `dx[0][0:1]` のように、`[0]` を記述しないと取り出せません。

理由がよくわからず困っています。どなたか解説いただけませんでしょうか？

[code]

    import numpy as np
    
    D, N = 8, 7
    x = np.random.randn(1,D)
    y = np.repeat(x, N, axis=0)
    
    dy = np.random.randn(N, D)
    dx = np.sum(dy, axis=0, keepdims=True)
    
    dy_sum = np.sum(dy, axis=0)
    
    print(dy_sum[0:1])
    print(dx[0][0:1])
    
[/code]


CC BY-SA 4.0
2020-05-04T04:04:27.987
66270
2020-08-13T06:14:35.540
2020-08-13T06:14:35.540
3060
39977
question
python python3 numpy
なぜリストの一部を取り出す時に構文が違うのかわかりません


`keepdims=True` としているので、`dx` の次元数(`ndim`) が `2` になっています。  
`keepdims=False` とするか、`keepdims` を指定しなければ `dx[0]` で最初の値を取り出す事ができます。

ndim が `2` → False で次元数を `1` にしてやると `dx[0]` が取り出せました。

* * *

_この投稿は[@ladle
さんのコメント](https://ja.stackoverflow.com/questions/66270/%e3%81%aa%e3%81%9c%e3%83%aa%e3%82%b9%e3%83%88%e3%81%ae%e4%b8%80%e9%83%a8%e3%82%92%e5%8f%96%e3%82%8a%e5%87%ba%e3%81%99%e6%99%82%e3%81%ab%e6%a7%8b%e6%96%87%e3%81%8c%e9%81%95%e3%81%86%e3%81%ae%e3%81%8b%e3%82%8f%e3%81%8b%e3%82%8a%e3%81%be%e3%81%9b%e3%82%93#comment72704_66270)
と [@yokomizo-groove
さんのコメント](https://ja.stackoverflow.com/questions/66270/%e3%81%aa%e3%81%9c%e3%83%aa%e3%82%b9%e3%83%88%e3%81%ae%e4%b8%80%e9%83%a8%e3%82%92%e5%8f%96%e3%82%8a%e5%87%ba%e3%81%99%e6%99%82%e3%81%ab%e6%a7%8b%e6%96%87%e3%81%8c%e9%81%95%e3%81%86%e3%81%ae%e3%81%8b%e3%82%8f%e3%81%8b%e3%82%8a%e3%81%be%e3%81%9b%e3%82%93#comment72729_66270)
の内容を元に コミュニティwiki として投稿しました。_


CC BY-SA 4.0
2020-08-13T06:12:37.857
69512
2020-08-13T06:12:37.857
3060
66270
answer