gpt4 book ai didi

python - 用零填充 1D NumPy 数组以形成 2D 数组

转载 作者:行者123 更新时间:2023-11-30 22:34:07 29 4
gpt4 key购买 nike

我有一个 numpy 数组:

arr=np.array([0,1,0,0.5])

我需要如下形成一个新数组,使得每个零元素重复三次,并且每个非零元素都有 2 个前面的零,后跟非零数字。简而言之,每个元素都重复三次,零就这样,非零则有 2 前面的 0,然后是数字本身。如下:

([0,1,0,0.5])=0,0,0, [for index 0]
0,0,1 [for index 1]
0,0,0 [for index 2, which again has a zero] and
0,0,0.5

最终输出应该是:

new_arr=[0,0,0,0,0,1,0,0,0,0,0,0.5]

np.repeat() 重复所有数组元素 n 次,但我不希望这样。这应该怎么做呢?感谢您的帮助。

最佳答案

快速 reshape ,然后调用 np.pad会做的:

np.pad(arr.reshape(-1, 1), ((0, 0), (2, 0)), 'constant')

输出:

array([[ 0. ,  0. ,  0. ],
[ 0. , 0. , 1. ],
[ 0. , 0. , 0. ],
[ 0. , 0. , 0.5]])

你会想再次把它压平。只需调用 .reshape(-1, ) 即可完成。

>>> np.pad(arr.reshape(-1, 1), ((0, 0), (2, 0)), 'constant').reshape(-1, )
array([ 0. , 0. , 0. , 0. , 0. , 1. , 0. , 0. , 0. , 0. , 0. ,
0.5])

关于python - 用零填充 1D NumPy 数组以形成 2D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44952829/

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