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

если я чего не пропустил, в остальном он рабочий

→ Ссылка