У меня есть следующие Numpy матрицы:Перебор Numpy столбцов матрицы
0 1 2 3 4 5 6 7 8 9
0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 0.0 0.0 5.0 0.0 9.0 0.0 0.0 0.0 0.0 0.0
2 0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0
3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.0 0.0
4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
5 0.0 0.0 7.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
7 5.0 0.0 0.0 0.0 0.0 0.0 0.0 6.0 0.0 0.0
8 2.0 0.0 0.0 0.0 3.0 0.0 6.0 0.0 8.0 0.0
9 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Я хочу, чтобы вычислить среднее ненулевые значения каждой строки и столбца отдельно. Так что мой результат должен быть что-то вроде этого:
average_rows = [1.0,7.0,2.0,5.0,0.0,4.0,0.0,5.5,4.75,1.0,0.0]
average_cols = [3.5,1.0,4.33333,0.0,4.33333,0.0,4.0,6.0,6.5,0.0]
Я не могу понять, как перебрать их, и я получаю TypeError: unhashable type
Кроме того, я не уверен, что если итерация является лучшим решением , Я также попробовал что-то вроде R[:,i]
, чтобы захватить каждый столбец и суммировать его с помощью sum(R[:,i])
, но продолжайте получать ту же ошибку.
Как вы получили этот аккуратный табличный дисплей? Это не нормальный 'numpy'. С ярлыками строк и столбцов это выглядит как 'pandas'. Что ** точно ** вы подразумеваете под «матрицей»? – hpaulj
Это много. Я начинаю с «R = np.zeros ((Rrows, Rcols))», затем повторяет и заполняет ненулевые значения, это в основном разреженная матрица. Он может быть хорошо отображен, так как я использую ipython notebook. – BKS
Хорошо, я использую Ipython всего, но не ноутбук. Но если это «R», я не вижу, откуда приходит ошибка «unhashable». Когда вы сообщаете об ошибках, вы должны показывать хотя бы часть стека ошибок и строку кода, которая его создала. – hpaulj