Как вы рассчитываете numpy массивов в определенных случаях? - PullRequest
0 голосов
/ 26 января 2020

Я новичок в программировании и начинаю учиться Python .. Я хочу кое-что спросить, например, у меня есть код, подобный этому

import pandas as pd
from pandas.api.types import CategoricalDtype
import numpy as np


data = pd.DataFrame(np.array([[1, 1, 2, 3], [2, 2, 3, 3], [1, 1, 2, 1]]))

weights = np.array([0.1, 0.3, 0.5, 0.6])

n = data.max().max()
dummies = pd.get_dummies(data.T.astype(CategoricalDtype(categories=np.arange(1, n + 1))))
result = weights.dot(dummies).reshape(data.shape[0], n)
result = np.argmax(result, axis=1) + 1
result = np.sum(result)

print(result)

результаты вышеупомянутой программы 7

я спрашиваю, как, если переменная weight имеет несколько строк, подобных этой.

weights = np.array([[0.1, 0.3, 0.5, 0.6],
                    [0.3, 0.1, 0.2, 0.4],
                    [0.4, 0.3, 0.1, 0.3]])

какую часть синтаксиса мне следует изменить?

Я хочу получить следующие результаты: [7 .. .. .. .. ..] << этот результат зависит от количества строк в переменной <code>weight

1 Ответ

0 голосов
/ 26 января 2020

У вас нет комментариев в вашем коде. Поэтому я ввел переменные weights1, weights2, result1 и result2, чтобы отследить результаты и сравнить логи c.

import pandas as pd
from pandas.api.types import CategoricalDtype
import numpy as np


data = pd.DataFrame(np.array([[1, 1, 2, 3], [2, 2, 3, 3], [1, 1, 2, 1]]))

weights1 = np.array([0.1, 0.3, 0.5, 0.6])
weights2 = np.array([[0.1, 0.3, 0.5, 0.6],
                    [0.3, 0.1, 0.2, 0.4],
                    [0.4, 0.3, 0.1, 0.3]])

n = data.max().max()
dummies = pd.get_dummies(data.T.astype(CategoricalDtype(categories=np.arange(1, n + 1))))

result1 = weights1.dot(dummies).reshape(data.shape[0], n)
result2 = weights2.dot(dummies).reshape(data.shape[0], n, weights2.shape[0])

result1 = np.argmax(result1, axis=1) + 1
result2 = np.argmax(result2, axis=2) + 1

result1 = np.sum(result1)
result2 = np.sum(result2,1)

print(result1)
print(result2)

Вывод:

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