Home > Blockchain >  How to create a matrix like below using Numpy
How to create a matrix like below using Numpy

Time:10-26

Matrix is like

[0, 1, 2]
[1, 2, 3]
[2, 3, 4]

For clarification, it's not just to create one such matrix but many other different matrices like this.

[0, 1, 2, 3]
[1, 2, 3, 4]
[2, 3, 4, 5]

CodePudding user response:

You can use a sliding_window_view

from numpy.lib.stride_tricks import sliding_window_view as swv

cols = 4
rows = 3

out = swv(np.arange(cols rows-1), cols).copy()

NB. because this is a view, you need .copy() to make it a mutable array, it's not necessary if a read-only object is sufficient (e.g., for display or indexing).

Output:

array([[0, 1, 2, 3],
       [1, 2, 3, 4],
       [2, 3, 4, 5]])

Output with cols = 3 ; rows = 5:

array([[0, 1, 2],
       [1, 2, 3],
       [2, 3, 4],
       [3, 4, 5],
       [4, 5, 6]])

alternative: broadcasting:

cols = 4
rows = 3

out = np.arange(rows)[:,None]   np.arange(cols)

Output:

array([[0, 1, 2, 3],
       [1, 2, 3, 4],
       [2, 3, 4, 5]])

CodePudding user response:

L = 3
np.array([
   np.array(range(L))   j
   for j in range(L)
])

or a bit of optimization:

L = 3
a = np.array(range(L))
np.array([
   a   j
   for j in range(L)
])

CodePudding user response:

You can easily create a matrix like that using broadcasting, for instance

>>> np.arange(3)[:, None]   np.arange(4)
array([[0, 1, 2, 3],
       [1, 2, 3, 4],
       [2, 3, 4, 5]])
  • Related