Python 在numpy数组中插入零

Python 在numpy数组中插入零,python,numpy,Python,Numpy,一种函数,它接受一个向量并返回一个新向量,其中每个元素由4个连续的零分隔 例如: [4, 2, 1] --> [4,0,0,0,0,2,0,0,0,0,1] 您可以使用以下方法实现它 import numpy as np a = [4, 2, 1] new_a = np.zeros((len(a)-1)*5+1) new_a [np.arange(0,len(a)*5,5)] = a print(new_a) 输出: array([4., 0., 0., 0., 0., 2.

一种函数,它接受一个向量并返回一个新向量,其中每个元素由4个连续的零分隔

例如:

[4, 2, 1] --> [4,0,0,0,0,2,0,0,0,0,1]

您可以使用以下方法实现它

import numpy as np

a = [4, 2, 1] 

new_a = np.zeros((len(a)-1)*5+1)

new_a [np.arange(0,len(a)*5,5)] = a

print(new_a)
输出:

array([4., 0., 0., 0., 0., 2., 0., 0., 0., 0., 1.])
array([4., 0., 0., 0., 0., 2., 0., 0., 0., 0., 1.])

将阵列转换为列,在右侧添加一块零,展平并修剪末端的多余零:

np.concatenate([arr.reshape((-1, 1)), 
                np.zeros((arr.size, 4))], axis=1)\
  .reshape(-1)[:-arr.size-1]
array([4., 0., 0., 0., 0., 2., 0., 0., 0., 0., 1.])
您可以使用
insert()
repeat()
获得如下内容:

>>> a = np.array([4, 2, 1])
>>> np.insert(a, np.repeat([1, 2], 4), 0)
array([4, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1])
设置


使用切片分配:

s = a.shape[0]
v = s + (4 * (s - 1))
f = np.zeros(v)

f[::5] = a


我想这个函数可以解决您的问题。

欢迎使用堆栈溢出!为了让我们能够充分地帮助你,看看你这么多年来都做了些什么是很有帮助的。请您解释一下4行新数组[np.arange(0,len(a)*5,5)]=athat piece give数组([0,5,10]),这是我们初始数组的要求位置,它是如何工作的,它需要开始、结束、步长,然后创建序列。如果有任何帮助您解决问题,请接受答案。谢谢
array([4., 0., 0., 0., 0., 2., 0., 0., 0., 0., 1.])
def insert_zeros_n(arr, n=4):
    ind = np.repeat([i+1 for i in range(len(arr)-1)], n) # where to insert zeros
    return np.insert(arr, ind, 0) # insert zeros