2017-10-14 90 views
0

我得3D陣列產品尺寸(4,2,1)由兩個值(60,80)numpy.tile爲3D陣列

import numpy as np 
array([[[ 60.], 
     [ 60.]], 
    [[ 60.], 
    [ 60.]], 
    [[ 80.], 
    [ 80.]], 
    [[ 80.], 
    [ 80.]]]) 

我做如下

a = np.array([[[ 60.]], 
     [[ 80.]]]) 
np.tile(a, (2, 2,1)) 

和得到

array([[[ 60.], 
     [ 60.]], 
     [[ 80.], 
     [ 80.]], 
     [[ 60.], 
     [ 60.]], 
     [[ 80.], 
     [ 80.]]]) 

如何獲得預期的數組?

回答

1

你可以用結合np.tilenp.repeat

a = np.array([[[ 60.]], 
     [[ 80.]]]) 
np.repeat(np.tile(a, (1,2,1)), 2, axis=0) 

#array([[[ 60.], 
#  [ 60.]], 

#  [[ 60.], 
#  [ 60.]], 

#  [[ 80.], 
#  [ 80.]], 

#  [[ 80.], 
#  [ 80.]]]) 

或者使用np.repeat + reshape

np.repeat(a, 4).reshape(4,2,1) 
#array([[[ 60.], 
#  [ 60.]], 

#  [[ 60.], 
#  [ 60.]], 

#  [[ 80.], 
#  [ 80.]], 

#  [[ 80.], 
#  [ 80.]]])