在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)))
这两个numpy对象有什么区别?
import numpy as np
np.array([[0,0,0,0]])
np.array([0,0,0,0])
Run Code Online (Sandbox Code Playgroud)