

長さ`3575`のベクトルが`201`本ありそれを`numpy.ndarray`形式で保存しています．説明の簡単のため`x`とします．  
この`x`の各行，つまり形が`(1,
3575)`のベクトルに対して計算を行いたいのですが，各行ごとを取得する方法がわかりません．どなたかわかる方がいらっしゃいましたらご教授よろしくお願いします．  
以下にサイズを下げたminimal exampleを示します．

[code]

    import numpy as np
    
    x = np.array([[22, 44, 66], [90, 80, 70], [1, 3, 2]])
    for _ in range(x.shape[0]):
        各行のベクトル = 各行のベクトル / np.linalg.norm(各行のベクトル)
        print(各行のベクトル)
    
[/code]


CC BY-SA 4.0
2021-01-26T03:09:31.380
73579
2023-10-15T07:07:25.983
2021-01-26T04:20:00.533
3060
36750
question
python python3 numpy
行列の各行をforループで計算する方法


各行ごと取り出すのなら以下のようにできます

[code]

    import numpy as np
    
    x = np.array([[22, 44, 66], [90, 80, 70], [1, 3, 2]])
    for vec in x:
        v = vec / np.linalg.norm(vec)
        print(v)
    
[/code]

全体を一度に行う方法はコメントに紹介されています


CC BY-SA 4.0
2021-01-26T04:21:22.663
73583
2021-01-26T04:21:22.663
43025
73579
answer


各行をごと取り出すなら

[code]

    import numpy as np
    k
    x = np.array([[22, 44, 66], [90, 80, 70], [1, 3, 2]])
    for i in x:
        norm = vec / np.linalg.norm(vec)
        print(norm)
    
[/code]

で計算することが可能です。

また特定の行だけを指定したいのならば

[code]

    #空のnp.arrayのリストを作成
    list_x = np.array([])
    for i in x:
        list_x = np.append(list_x,i)
    print(list_x)
    
[/code]

とやると、xに入っていたリストがリストごとに分解されてlist_xに挿入されるので、計算したいリストだけを取り出して計算することが可能です。


CC BY-SA 4.0
2021-05-18T06:18:09.767
75914
2021-05-18T06:18:09.767
45368
73579
answer