一个接受 vector 并返回一个新矢量的函数,其中每个元素由4个连续的零分隔。
示例:
[4, 2, 1] --> [4,0,0,0,0,2,0,0,0,0,1]
答案 0 :(得分:3)
设置
a = np.array([4, 2, 1])
使用切片分配:
s = a.shape[0]
v = s + (4 * (s - 1))
f = np.zeros(v)
f[::5] = a
array([4., 0., 0., 0., 0., 2., 0., 0., 0., 0., 1.])
答案 1 :(得分:2)
您可以使用以下方法实现它!
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.])
答案 2 :(得分: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.])
答案 3 :(得分: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])
答案 4 :(得分: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
我认为此功能可以解决您的问题。