Python 在numpy数组中插入零
一种函数,它接受一个向量并返回一个新向量,其中每个元素由4个连续的零分隔 例如: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, 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