我有一个(200,1)矩阵,我需要将其转换为(200,)
y = np.matrix(np.append(np.zeros(200), np.ones(200))).T
y的形状是(200,1)
我试着弄平矩阵:
c = y.flatten()
我的形状为(1,200)
然后我尝试访问矩阵的第一个元素
c[0].shape
我仍然会变形(1,200)
如何将原始矩阵转换为(200,)
答案 0 :(得分:1)
您正在使用np.matrix
并根据documentation,
class numpy.matrix [source]从类似数组的对象或数据字符串返回一个矩阵。 矩阵是一种专门的二维阵列,通过操作保留其二维特性。
因此,在致电matrix.flatten()
后,c
的维度仍为2。 (请注意matrix.flatten()
返回矩阵的副本,展平为(1,N)矩阵,其中N是原始矩阵中元素的数量。
一种解决方案:在
中使用np.array
y = np.array(np.append(np.zeros(200), np.ones(200))).T
答案 1 :(得分:1)
您可以使用y.A1
>>> y = np.matrix(np.identity(3))
>>> y
matrix([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
>>> y.A1
array([1., 0., 0., 0., 1., 0., 0., 0., 1.])