Functional programming J获取矩阵的前N列

Functional programming J获取矩阵的前N列,functional-programming,j,Functional Programming,J,我知道给定一个大小为NxN的矩阵M,我可以使用(I.M){M获得前M行。我想知道如何从M中获得前n列 我想有点像 rows =: (i.m){M 给定一个大小为mxN的矩阵,将采用相同的方法来获得该新矩阵的前n列 编辑: 我正在尝试这样使用代码: (i.n)"1{(i.m){M 但是它不起作用,因为它只返回M的第一行中n列的第一个元素,我需要get n列。您已经从Dan那里得到了几个答案。这一个只是解释为什么您可能更喜欢使用take而不是from。如果您遇到n大于M中的列数的情况,请使用w我

我知道给定一个大小为NxN的矩阵
M
,我可以使用
(I.M){M
获得前M行。我想知道如何从
M
中获得前n列

我想有点像

rows =: (i.m){M
给定一个大小为mxN的矩阵,将采用相同的方法来获得该新矩阵的前n列

编辑:

我正在尝试这样使用代码:

(i.n)"1{(i.m){M

但是它不起作用,因为它只返回M的第一行中n列的第一个元素,我需要get n列。

您已经从Dan那里得到了几个答案。这一个只是解释为什么您可能更喜欢使用take而不是from。如果您遇到n大于M中的列数的情况,请使用w我会给你一个错误的地方

   $M
10 10
   (i. 3){"1 M
 0  1  2
10 11 12
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
90 91 92
   3{."1 M
 0  1  2
10 11 12
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
90 91 92
   (i. 12){"1 M
|index error
|   (i.12)    {"1 M
   12{."1 M
 0  1  2  3  4  5  6  7  8  9 0 0
10 11 12 13 14 15 16 17 18 19 0 0
20 21 22 23 24 25 26 27 28 29 0 0
30 31 32 33 34 35 36 37 38 39 0 0
40 41 42 43 44 45 46 47 48 49 0 0
50 51 52 53 54 55 56 57 58 59 0 0
60 61 62 63 64 65 66 67 68 69 0 0
70 71 72 73 74 75 76 77 78 79 0 0
80 81 82 83 84 85 86 87 88 89 0 0
90 91 92 93 94 95 96 97 98 99 0 0

我现在没有时间给出一个正确的答案,但是这个短篇故事是动词等级,这是J中的一个基本概念。试试看
(I.n){“1 M
。或者采取另一种方法,使用转置
(I.n){124;:M
。或者,代替
{/code>(from)使用
{.
(take),如
n{.1 M
n{.:M
(u,n){.M
。这起作用了,我试图在错误的位置使用排名。我得到了一个解决方案,请发布你的解决方案,我将接受它并给出适当的答案