94602


ある行列の特定の要素数ごとの中央値を求め、それを入れたリストを返す関数を作ろうとしています。  
現在以下のように処理を書いているのですが、これを実行すると ”NameError: name 'np' is not defined” が出てしまいます。  
自作関数の処理には別のモジュールを使えないのでしょうか？  
解決策をご存知の方がいらっしゃいましたらご教示願いたいです。  
よろしくお願いいたします。

[code]

    def median(array0, ran):
    med = []
    index = (list(range(0, ran)))
    
    while array0.size >= len(index):
        array1 = array0[0:len(index)]
        med.append(np.median(array1))
        array0 = np.delete(array0, index)
    
        if array0.size < len(index):
            med.append(np.median(array0))
            break
    return med
    
[/code]


CC BY-SA 4.0
2023-04-21T12:06:25.340
94597
2023-04-22T07:17:41.763
2023-04-22T07:17:41.763
3060
58022
question
python numpy
defで定義した自作関数の処理にnumpyを使いたい


npを定義した後、インデント関連で別のエラーが出ると思いましたので、アイデアを提案します。(エラーが出ないだけで質問者さんのニーズに合っているかは分かりませんが…)

改行を含めずに言うと、既存のコードの3,4,5,12行目の初めに半角スペースを入れてみました。(そうしないと、それ以降のコードが関数の定義のコードとして、認識されないと思いまして。)  
1行目は質問者さんの質問に答えるためにも一応入れました。(環境次第では、不要かもです)

(jupyter notebook/Python 3で試しました)

[code]

    import numpy as np
    def median(array0, ran):
     med= []
     index = (list(range(0, ran)))
    
     while array0.size >= len(index):
        array1 = array0[0:len(index)]
        med.append(np.median(array1))
        array0 = np.delete(array0, index)
    
        if array0.size < len(index):
            med.append(np.median(array0))
            break
     return med
    
[/code]


CC BY-SA 4.0
2023-04-21T13:59:47.143
94602
2023-04-21T14:14:02.673
2023-04-21T14:14:02.673
52631
52631
94597
answer