我使用以下函数从二进制文件中读取矩阵:
def read_data(name,nx,ny):
data = np.fromfile(name, count=nx*ny, dtype=np.float64).reshape((nx,ny), order='F')
return data
例如:
A = read_data('myfile.xyz',10,1000)
在此示例中,A是10乘1000矩阵。如果我寻找A线的形状,我得到:
print A[0,:].shape
>>> (1000L,)
现在,假设我将A乘以10×10矩阵B:
A = np.dot(B,A)
A的尺寸仍然是10乘1000但是,当看到A的第一行的形状时,我得到:
print A[0,:].shape
>>> (1000L, 1L)
而不是
>>> (1000L,)
先前。谁能向我解释这里发生了什么?
答案 0 :(得分:4)
我的猜测是你的“B”是矩阵类型,而不是普通的ndarray:
In [30]: a=np.random.randn(10,1000)
In [31]: b=np.random.randn(10,10)
In [32]: np.dot(b,a)[:,0].shape
Out[32]: (10,)
In [33]: np.dot(np.matrix(b),a)[:,0].shape
Out[33]: (10, 1)