В numpy некоторые из операций возвращаются в форме (R, 1), но некоторые возвращают (R,). Это сделает умножение матрицы более утомительным, так как требуется явный reshape. Например, учитывая матрицу M, если мы хотим сделать numpy.dot(M[:,0], numpy.ones((1, R))), где R - количество строк (конечно, одна и та же проблема также возникает по столбцам). Мы получим ошибку matrices are not aligned, так как M[:,0] имеет форму (R,), но numpy.ones((1, R)) имеет форму (1, R).
Итак, мои вопросы:
-
Какая разница между формой
(R, 1)и(R,). Я знаю буквально это список номеров и список списков, где весь список содержит только число. Просто задайтесь вопросом, почему бы не сконструироватьnumpyтак, чтобы он облегчал форму(R, 1)вместо(R,)для упрощения матричного умножения. -
Есть ли лучшие способы для приведенного выше примера? Без явной перестройки:
numpy.dot(M[:,0].reshape(R, 1), numpy.ones((1, R)))