如何访问盒装数组的第n列?

abs*_*tor 2 arrays j

鉴于我有一个带有形状的盒装数组 4 3

v =. 4 3$'x1'; 'y1'; 'z1'; 'x2'; 'y2'; 'z2'; 'x3'; 'y3'; 'z3'
v
NB. +--+--+--+
NB. |x1|y1|z1|
NB. +--+--+--+
NB. |x2|y2|z2|
NB. +--+--+--+
NB. |x3|y3|z3|
NB. +--+--+--+
NB. |x1|y1|z1|
NB. +--+--+--+
Run Code Online (Sandbox Code Playgroud)

选择

我可以通过第二排获得 1{::v

1{::v
NB. Get the second row
NB. +--+--+--+
NB. |x2|y2|z2|
NB. +--+--+--+
Run Code Online (Sandbox Code Playgroud)

投影

但是如何访问第二列?

NB. Get the second column
NB. +--+
NB. |y1|
NB. +--+
NB. |y2|
NB. +--+
NB. |y3|
NB. +--+
NB. |y1|
NB. +--+
Run Code Online (Sandbox Code Playgroud)

MPe*_*ier 5

您还可以指定的等级{":

1 {"1 v
NB. +--+--+--+--+
NB. |y1|y2|y3|y4|
NB. +--+--+--+--+
Run Code Online (Sandbox Code Playgroud)

这将为您提供第二列,减去排名,因此只是一个形状数组4.要使其成形4 1,请使用Ravel项目,.:

,.1 {"1 v
NB. +--+
NB. |y1|
NB. +--+
NB. |y2|
NB. +--+
NB. |y3|
NB. +--+
NB. |y1|
NB. +--+
Run Code Online (Sandbox Code Playgroud)

此外,所有这些逻辑都适用于矩阵是否装箱.

  • 对我来说,这似乎是"正确"的方式.只有一点注意:```的左参数有一个形状,所以你可以使用`(,1){"1 v`将列作为一列. (2认同)