В 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)))