gpt4 book ai didi

python - numpy 填充一个序列而不是常量值

转载 作者:行者123 更新时间:2023-11-28 22:20:29 37 4
gpt4 key购买 nike

我正在尝试用每行的序列 [0, 1] 填充一个 numpy 数组。因此,例如,如果我有一个数组:

x = np.random.rand(2, 4)

array([[0.51352468, 0.4274193 , 0.11244252, 0.56787658],
[0.37855923, 0.80976327, 0.0290558 , 0.87585656]])

padding操作后变成:

array([[0.51352468, 0.4274193 , 0.11244252, 0.56787658],
[0.37855923, 0.80976327, 0.0290558 , 0.87585656],
[0. , 0. , 0. , 0. ],
[1. , 1. , 1. , 1. ]])

目前,我这样做的方式是:

padded = np.asarray(x)
padded = np.pad(padded, [(0, 4 - len(padded.shape[0])), (0, 0)], 'constant')
padded[:, -1] = 1.0

这似乎有点麻烦,因为我用零填充然后将最后一行设置为 1。我想知道是否有一种方法可以只通过一次 numpy.pad 调用来完成此操作?

编辑

从上面的代码可以看出,该函数会将输入转换为 4 维对象(数组的输入维度为 2 或 3,即 len(x) == 2 或 3)。因此,如果输入是二维的,它将添加两行零,然后将最后一个设置为 1。如果输入是三维的,它将添加一行零,然后覆盖为一行。

最佳答案

如果你简单地分配一个由零组成的二维数组,也许会更简单(阅读),将 ones 分配给最后一行,并将 x 复制到填充数组中:

import numpy as np
def pad(x):
nrows, ncols = x.shape
padded = np.zeros((4, ncols))
padded[-1, :] = 1
padded[:nrows, :] = x
return padded

nrows, ncols = np.random.randint(2, 4), 4
x = np.random.rand(nrows, ncols)
padded = pad(x)

产生一个填充数组,例如

array([[ 0.38746512,  0.23166218,  0.97459752,  0.37565333],
[ 0.05774882, 0.44061104, 0.06661526, 0.26714634],
[ 0.00805322, 0.30201519, 0.71373347, 0.08288743],
[ 1. , 1. , 1. , 1. ]])

array([[ 0.68343436,  0.6108459 ,  0.84325679,  0.10912022],
[ 0.547983 , 0.7543816 , 0.02411474, 0.02711809],
[ 0. , 0. , 0. , 0. ],
[ 1. , 1. , 1. , 1. ]])

取决于 x 的行数(假设 <= 4)。

关于python - numpy 填充一个序列而不是常量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48929508/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com