Something like this, perhaps?
]a=. i.5 5
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
]b=. 2 2 $ 100 200 300 400
100 200
300 400
b (<1 2;0 1)} a
0 1 2 3 4
100 200 7 8 9
300 400 12 13 14
15 16 17 18 19
20 21 22 23 24
Note this requires you to specify the entire perimeter of b. Here's a
version which abstracts that logic, specifying only the coordinate of the
upper-left corner:
am=. {{ x (<m <@(+i.)"0 $x)} y }}
b 2 2 am a
0 1 2 3 4
5 6 7 8 9
10 11 100 200 14
15 16 300 400 19
20 21 22 23 24
This will also work for higher-rank a and b.
-E
On Wed, 9 Mar 2022, Richard Donovan wrote:
Can I amend an array with a smaller array? For example amend a 5x5 array by a
2x2 array starting at location x,y within the larger array?
Thanks
Richard Donovan
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm