繁体   English   中英

如何在numpy.matrix.defmatrix.matrix类中获取矩阵的子集

[英]how to get subset of matrix in class numpy.matrix.defmatrix.matrix

原始矩阵变量为N,形状为(138,210)。 我尝试使用N [:] [:-1]和N [:] [-1]来获得矩阵N的子集。因此,这两个子集的形状分别为(138,209)和(138,1)。 但是,此方法不起作用。 响应为(137,210)和(1,210)。 我也尝试了N [:-1] [:],但这都不起作用。

N的类型为numpy.matrix.defmatrix.matrix

如何获得正确答案?

要选择所有行和最后一个列:

N[:, :-1]

要从每一行中仅选择最后一列:

N[:, -1]

N[:, :-1]将具有形状(138, 209) ,而N[:, -1]将具有形状(138, 1)

本食谱页面介绍了多维切片。


为什么N[:][:-1]返回的数组少一行

切片N默认为沿第一个轴切片。 因此, N[:]沿长度为138的轴进行切片。如上所示,要沿第二个轴进行切片,需要提供两个以逗号分隔的切片表达式:例如N[:, :-1] 第二个切片表达式:-1应用于第二个轴。

N[:]返回包含所有行的N切片(由于没有沿第二个轴执行切片,因此它也返回所有列)。 它是相同矩阵N的视图。 因此N[:]具有形状(138, 210) N[:][:-1]因此正在选择N的最后一行以外的所有内容,因此具有形状(137, 210)

这对您有用吗?

In [42]: N = np.random.rand(138, 210)

In [43]: N[:, :-1].shape
Out[43]: (138L, 209L)

In [44]: N[:, -1].shape
Out[44]: (138L,)

N[:, :-1]用于(138, 209)形状, N[:, -1]用于(138, 1)形状。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM