从1D数字阵列中生成2D

2024-04-25 06:56:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下1D numpy数组:

li = array([ 0.002,  0.003,  0.005,  0.009])

li.shape
(4L,)

我想制作一个2D numpy阵列(li_2D),形状为(4L,5L),如下所示:

^{pr2}$

有什么功能吗? 谢谢你


Tags: 功能numpyli数组array形状shapepr2
3条回答

您也可以使用numpy.repeat执行此操作:

In [5]: np.repeat(li, 5).reshape(li.shape[0], 5)
Out[5]: 
array([[ 0.002,  0.002,  0.002,  0.002,  0.002],
       [ 0.003,  0.003,  0.003,  0.003,  0.003],
       [ 0.005,  0.005,  0.005,  0.005,  0.005],
       [ 0.009,  0.009,  0.009,  0.009,  0.009]])

您可以使用numpy.tile或转置运算符来获取转置:

^{pr2}$

您可以使用np.pad完成此操作。首先,将数组重塑为(4,1)的形状,然后在边缘填充4列:

In [18]: np.pad(li.reshape(4,1),((0,0),(0,4)),mode='edge')
Out[18]: 
array([[ 0.002,  0.002,  0.002,  0.002,  0.002],
       [ 0.003,  0.003,  0.003,  0.003,  0.003],
       [ 0.005,  0.005,  0.005,  0.005,  0.005],
       [ 0.009,  0.009,  0.009,  0.009,  0.009]])

您可以使用^{}获得所需的形状:

li = np.array([ 0.002,  0.003,  0.005,  0.009])
np.tile(li.reshape(4, 1), (1, 5))

array([[ 0.002,  0.002,  0.002,  0.002,  0.002],
       [ 0.003,  0.003,  0.003,  0.003,  0.003],
       [ 0.005,  0.005,  0.005,  0.005,  0.005],
       [ 0.009,  0.009,  0.009,  0.009,  0.009]])

相关问题 更多 >