Are there other ways to deal with this problem involving large matrix?

Question:

Suppose i already have a very large 2d matrix(like [10000,10000]) and i want to create a new matrix A(like [10000,10000,2]) such that A[i,j,:]=[i,j]
The intuitive way is as follows:

import numpy as np
c = np.zeros([10000,10000,2])
d1,d2 = c.shape[:2]
for i in range(d1):
    for j in range(d2):
        c[i,j,:] = (i,j)

# it's  time-consuming

However, it’s time comsuming

I decide to use broadcast :

d = np.zeros([10000,10000,2])
d[:,:,0] = np.arange(10000).reshape(10000,1) + np.zeros(10000)
d[:,:,1] = np.arange(10000).reshape(1,10000) + np.zeros(10000).T 

It works.

But Is there any other way to do this?
I am newbee to deal with these kinds of large matrices, so I decided to look for some information about it.At first I thought it belongs to the fields of big data.Apparently,i am wrong.
Where can I find some information?
Thank you so much for your reply and advice.

Asked By: zo Aoo

||

Answers:

Use np.indices and transpose:

>>> shape = 10, 10
>>> np.indices(shape, float).transpose(1, 2, 0)
array([[[0., 0.],
        [0., 1.],
        [0., 2.],
        [0., 3.],
        [0., 4.],
        [0., 5.],
        [0., 6.],
        [0., 7.],
        [0., 8.],
        [0., 9.]],

       [[1., 0.],
        [1., 1.],
        [1., 2.],
        [1., 3.],
        [1., 4.],
        [1., 5.],
        [1., 6.],
        [1., 7.],
        [1., 8.],
        [1., 9.]],

       [[2., 0.],
        [2., 1.],
        [2., 2.],
        [2., 3.],
        [2., 4.],
        [2., 5.],
        [2., 6.],
        [2., 7.],
        [2., 8.],
        [2., 9.]],

       [[3., 0.],
        [3., 1.],
        [3., 2.],
        [3., 3.],
        [3., 4.],
        [3., 5.],
        [3., 6.],
        [3., 7.],
        [3., 8.],
        [3., 9.]],

       [[4., 0.],
        [4., 1.],
        [4., 2.],
        [4., 3.],
        [4., 4.],
        [4., 5.],
        [4., 6.],
        [4., 7.],
        [4., 8.],
        [4., 9.]],

       [[5., 0.],
        [5., 1.],
        [5., 2.],
        [5., 3.],
        [5., 4.],
        [5., 5.],
        [5., 6.],
        [5., 7.],
        [5., 8.],
        [5., 9.]],

       [[6., 0.],
        [6., 1.],
        [6., 2.],
        [6., 3.],
        [6., 4.],
        [6., 5.],
        [6., 6.],
        [6., 7.],
        [6., 8.],
        [6., 9.]],

       [[7., 0.],
        [7., 1.],
        [7., 2.],
        [7., 3.],
        [7., 4.],
        [7., 5.],
        [7., 6.],
        [7., 7.],
        [7., 8.],
        [7., 9.]],

       [[8., 0.],
        [8., 1.],
        [8., 2.],
        [8., 3.],
        [8., 4.],
        [8., 5.],
        [8., 6.],
        [8., 7.],
        [8., 8.],
        [8., 9.]],

       [[9., 0.],
        [9., 1.],
        [9., 2.],
        [9., 3.],
        [9., 4.],
        [9., 5.],
        [9., 6.],
        [9., 7.],
        [9., 8.],
        [9., 9.]]])
Answered By: Mechanic Pig
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.