from numpy import array, eye, matrix
x = array([1, 0])
A = eye(2)
print(A.dot(x))
打印[1. 0.]
。
另一方面,
B = matrix([[1, 0], [0, 1]])
print(B.dot(x))
打印[[1 0]]
,这是一个1乘2的数组。此外,
print(B.dot(x).flatten())
还会打印[[1 0]]
。
这很烦人。为什么flatten在这里失败,我怎么能把它变成一维形状呢?
答案 0 :(得分:2)
停止使用matrix
。 numpy.matrix.flatten
返回1行矩阵,因为它与matrix
个实例一样平坦。如果由于某种原因您已经开始使用matrix
,请在展平之前使用matrix.A
转换为ndarray:
flat = whatever_matrix.A.flatten()
或只是使用A1
直接获得平面ndarray:
flat = whatever_matrix.A1