无法将(N,1)数组转换为(N,)

时间:2018-06-04 21:29:03

标签: python numpy reshape

我有一个(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,)

2 个答案:

答案 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.])
相关问题