better than mine, but only works with square matrix
I2d =: (I.@:, { [: , <@:,"0/&i./@:$)
I2d 4 3 $ 1 0 0 0 1 0 0 0 1 0 0 0
┌───┬───┬───┐
│0 0│1 1│2 2│
└───┴───┴───┘
I2d 4 3 $ 1 0 0 0 1 0 0 1 1 0 0 0
┌───┬───┬───┬───┐
│0 0│1 1│2 1│2 2│
└───┴───┴───┴───┘
----- Original Message -----
From: bill lam <[email protected]>
To: [email protected]
Cc:
Sent: Saturday, May 31, 2014 11:09:39 AM
Subject: Re: [Jprogramming] Getting index in 2+d array
(i,j) is the catalog (carteisan product), eg
[ix=. {;~i.3
+---+---+---+
|0 0|0 1|0 2|
+---+---+---+
|1 0|1 1|1 2|
+---+---+---+
|2 0|2 1|2 2|
+---+---+---+
the linear index of non-zero of arr is
I.,arr
0 4 8
finally, the (i,j) index you wanted are
0 4 8{,ix
+---+---+---+
|0 0|1 1|2 2|
+---+---+---+
Сб, 31 май 2014, Jon Hough написал(а):
> Probably a very simple question. For a single dimension array I can do
> I. 1 0 1 1 1 0 0 0 1 0 1
> 0 2 3 4 8 10
> to get the nonzero indices.
> But I am not sure how to do this for a larger dimension. i.e. get the (i,j)
> or (i,j,k) index of nonzero elements.
> e.g. for this matrix:
> arr =. 3 3 $ 1 0 0 0 1 0 0 0 1
> I. doesn't work because it only gives me the ith value of the position of the
> nonzero elements.
> Any help appreciated.
> Regards.
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
--
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm