

下記のようなプログラムを実行したところ,

[code]

    # coding: utf-8
    
    
    import numpy as np
    
    def cos_sim(v1,v2):
        return np.dot(v1,v2) / (np.linarg.norm(v1) * np.linarg.norm(v2))
    
    
    x = np.array([1, 1, 1, 1, 1])
    y = np.array([1, 0, 1, 0, 1])
    z = np.array([0, 1, 0, 0, 0])
    
    print(cos_sim(x, y))
    print(cos_sim(y, z))
    print(cos_sim(z, x))
    
[/code]

以下のようなエラーが出ました。

[code]

    /.PyCharmCE2018.2/config/scratches/scratch.py
    Traceback (most recent call last):
      File "C:/Users/komaaaaaaari/.PyCharmCE2018.2/config/scratches/scratch.py", line 14, in <module>
        print(cos_sim(x, y))
      File "C:/Users/komaaaaaaari/.PyCharmCE2018.2/config/scratches/scratch.py", line 7, in cos_sim
        return np.dot(v1,v2) / (np.linarg.norm(v1) * np.linarg.norm(v2))
    AttributeError: module 'numpy' has no attribute 'linarg'
    
    Process finished with exit code 1
    
[/code]

類似の例を見てnumpyの再インストールは行ったのですが解決できず、お力をお借りしたいです。pythonは詳しくないためさっぱりです。よろしくお願いします。


CC BY-SA 4.0
2018-11-19T03:05:21.463
50428
2018-11-19T03:19:23.743
31048
question
python numpy
module 'numpy' has no attribute 'linarg'?


名前としてご指定の `linarg` は `linalg` (線形代数 = LINear ALGebra)の間違いです。  
`linalg` は線形代数学で定義される各種操作を持っています。

`AttributeError: module 'numpy' has no attribute 'linarg'`

というエラーメッセージがあります。  
これは `numpy` モジュールは `linarg` というアトリビュートを持っていませんという意味です。  
つまり `linarg` の指定が怪しいということが読み取れます。

ここまで分かれば、その後のデバッグのコツとしては、

  1. `linarg` という名称は本当に正しいであろうか？と疑ってみる
  2. 正しいようであれば `linarg` を使う上では、何か特別な指定(特にパッケージのimportなど)をしなくてよいだろうか？

などを疑ってみるとよいでしょう。


CC BY-SA 4.0
2018-11-19T03:19:23.743
50430
2018-11-19T03:19:23.743
30827
50428
answer