Как вернуть массив NumPy вместо NoneType при применении функции к каждой строке массива NUMPY? - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь найти минимальное ненулевое попарное расстояние для каждой строки в моей матрице (511x511).Однако в следующем коде, который я написал, я мог либо получить значение для первой строки, используя функцию возврата, либо значение для всех строк, используя функцию печати. ​​

Мой код:

def allmatch():
    Match = pd.DataFrame(squareform(pdist(m1, metric='braycurtis')),columns=df.Location_Index.unique(), index=df.Location_Index.unique())
    X = Match.values
    for row in X:
        i = np.where(row==np.min(row[np.nonzero(row)]))
        return(row[i])

In[1]: allmatch()
Out[1]: array([0.00917431])

Или

    def allmatch():
        Match = pd.DataFrame(squareform(pdist(m1, metric='braycurtis')),columns=df.Location_Index.unique(), index=df.Location_Index.unique())
        X = Match.values
        for row in X:
            i = np.where(row==np.min(row[np.nonzero(row)]))
            print(row[i])

In[2]: allmatch()
Out[2]: [0.00917431]
        [0.03496503 0.03496503]
        [0.01098901]
        [0.00346021]
        [0.00471698]
        [0.00316456]
        [0.01123596]
        ...(with 504 more values)

В то время как первый набор кодов возвращает пустой массив, второй набор кодов возвращает NoneType.Я хотел бы получить значения во втором наборе в виде массива numpy, есть ли способ приблизиться к этому?Я понимаю, что мой код может быть не самым эффективным способом решения этой проблемы, и я буду благодарен за любые предложения по ее улучшению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...