Numpy how to replace one element in array1 with the whole array2

Say I have array1 and it is equal

array1=np.zeros((3,3))
that means [[0 0 0]
            [0 0 0]
            [0 0 0]]

but if I try the following, an error message appears:

array2=np.array[[111,222,333],[444,555,666],[77
array1[1,1]=array2

so how can i replace each element of array1 for another new array? eg

for i in range(3):
   for j in range (3):
       if i-j==0:
         array1[i,j]=array2

so it will become 3 * 9 instead of 3 * 3?

edit1 : expected output for example above

  [[[251, 123, 584],
    [251, 123, 584],
    [251, 123, 584]],

   [[251, 123, 584],
    [251, 123, 584],
    [251, 123, 584]],

   [[251, 123, 584],
    [251, 123, 584],
    [251, 123, 584]]]
+4
source share
3 answers

You cannot change the size (number of elements) of a numpy array. But you can use lists as an intermediate step to create this final array:

>>> import numpy as np
>>> array1 = np.zeros((3,3))
>>> array2 = [251,123,584]
>>> np.array([[array2 for _ in row] for row in array1.tolist()])
array([[[251, 123, 584],
        [251, 123, 584],
        [251, 123, 584]],

       [[251, 123, 584],
        [251, 123, 584],
        [251, 123, 584]],

       [[251, 123, 584],
        [251, 123, 584],
        [251, 123, 584]]])

With some intermediate steps:

# Convert the original array to a list
>>> array1.tolist()
[[1.0, 2.0, 3.0], [1.0, 2.0, 3.0], [1.0, 2.0, 3.0]]

# Iterate over all elements and replace the element by array2:
>>> [[array2 for _ in row] for row in array1.tolist()]
[[[251, 123, 584], [251, 123, 584], [251, 123, 584]],
 [[251, 123, 584], [251, 123, 584], [251, 123, 584]],
 [[251, 123, 584], [251, 123, 584], [251, 123, 584]]]

# Convert the list to a numpy array again
>>> np.array([[array2 for _ in row] for row in array1.tolist()])
...
+1
source

numpy, :

array1 = [[0,0],[0,0]]
array2 = [[1,2],[3,4]]

for i in range(len(array1)):
    for j in range(len(array1[0])):
        array1[i][j] = array2

print array1

numpy, , numpy .

+1

, , . .

3d, (9,9):

In [118]: a=np.zeros((3,3,3),int)

In [119]: a2=np.array([251,123,584])

In [120]: a[...]=a2    # short hand for a[:,:,:]

In [121]: a
Out[121]: 
array([[[251, 123, 584],
        [251, 123, 584],
        [251, 123, 584]],

       [[251, 123, 584],
        [251, 123, 584],
        [251, 123, 584]],

       [[251, 123, 584],
        [251, 123, 584],
        [251, 123, 584]]])

a[...]=a2 a[:,:,:]=a2[None,None,:]

a2[None,:,None] a2[:,None,None] a2 .

np.tile(a2,[3,3,1]) . , np.resize(a2,(3,3,3)). .


, :

In [139]: a2=np.array([1,2,3,4])

In [140]: a[...]=a2

In [141]: a
Out[141]: 
array([[[ 1.,  2.,  3.,  4.],
        [ 1.,  2.,  3.,  4.],
        [ 1.,  2.,  3.,  4.]],

       [[ 1.,  2.,  3.,  4.],
        [ 1.,  2.,  3.,  4.],
        [ 1.,  2.,  3.,  4.]]])

4 a2 .

+1

All Articles