ValueError: setting an array element with a sequence. The requested array would exceed the maximum number of dimension of 2
Программа должна разделить элементы каждого столбца на его сумму. Затем сложить элементы строки и разделить на их кол-во. В онлайн компиляторе она работает, но в PyCharm выдаёт вышеуказанную ошибку. Жалуется на A[:,i] не понимаю в чём проблема.
A = np.matrix([[1,5,6,7],[1/5,1,4,6],[1/6,1/4,1,4],[1/7,1/6,1/4,1]])
print(np.around(A,decimals = 3,))
b=[0,0,0,0]
for i in range(A.shape[0]):
column = A[:,i]
s = sum(column)
print()
column = [divide / s for divide in column]
A[:,i] = column #ошибка здесь
print('Нормализованные столбцы:\n', np.around(A,decimals = 2,))
for i in range(A.shape[0]):
for j in range(A.shape[1]):
b[i]+=A[i,j]/4
print('Сумма элементов строк: ',np.around(b,decimals = 3,))````
Ответы (1 шт):
Автор решения: splash58
→ Ссылка
numpy позволяет делать вычисления по матрице без явных циклов, в чем собственно, одно из основных достоинств библиотеки
A = np.matrix([[1,5,6,7],[1/5,1,4,6],[1/6,1/4,1,4],[1/7,1/6,1/4,1]])
Программа должна разделить элементы каждого столбца на его сумму.
A = A / A.sum(axis=0)
Затем сложить элементы строки и разделить на их кол-во.
print(A.sum(axis=1) / A.shape[1])
Ваш код ругается, потому что с размерностями проблемы. чтобы он заработал, вычисляйте новую колонку так
column = column / s
если я чего не пропустил, в остальном он рабочий