gpt4 book ai didi

python - 在 numpy 数组的交替行和列中插入值

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:32 25 4
gpt4 key购买 nike

我需要在 numpy 数组的交替行和列中插入任意数量的零。例如,假设我们要在所有交替的列和行中插入 1 个零。

Input => [[ 1,2,3],
[ 4,5,6],
[ 7,8,9]]

output => [[ 1,0,2,0,3],
[ 0,0,0,0,0],
[ 4,0,5,0,6],
[ 0,0,0,0,0],
[ 7,0,8,0,9]]

我知道如何通过使用循环来实现这一点,但我不确定这是否是最有效的方式,或者是否有一些可能的矢量化实现。

最佳答案

一种使用zeros-initialization 并使用步长切片进行分配的方法 -

def insert_zeros(a, N=1):
# a : Input array
# N : number of zeros to be inserted between consecutive rows and cols
out = np.zeros( (N+1)*np.array(a.shape)-N,dtype=a.dtype)
out[::N+1,::N+1] = a
return out

样本运行-

In [167]: a
Out[167]:
array([[83, 87, 19, 24],
[28, 24, 24, 77],
[26, 87, 57, 37]])

In [168]: insert_zeros(a, N=1)
Out[168]:
array([[83, 0, 87, 0, 19, 0, 24],
[ 0, 0, 0, 0, 0, 0, 0],
[28, 0, 24, 0, 24, 0, 77],
[ 0, 0, 0, 0, 0, 0, 0],
[26, 0, 87, 0, 57, 0, 37]])

In [169]: insert_zeros(a, N=2)
Out[169]:
array([[83, 0, 0, 87, 0, 0, 19, 0, 0, 24],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[28, 0, 0, 24, 0, 0, 24, 0, 0, 77],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[26, 0, 0, 87, 0, 0, 57, 0, 0, 37]])

关于python - 在 numpy 数组的交替行和列中插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744888/

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