我试图在给定数组中的每个备用位置插入3个连续的零。这可以很好地处理列表,但不能处理数组,因为当我运行for循环时,它不会将其保存在数组中,而只是暂时打印它
var = [1,2,3,4,5]
n = 0
for j in range(4):
for i in range(3):
n = n+1
var.insert(n,0)
n=n+1
print(var)
zero_3 = np.zeros(3)
var2 = np.array([1,2,3,4,5])
for n in range(1,5):
print(var2)
print(np.insert(var2,n,zero3))
print(var2)
n=n+3
#Output when I run it shows this:
#var
#[1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5]
#var2 for all lines below
#[1 2 3 4 5]
#[1 0 0 0 2 3 4 5]
#[1 2 3 4 5]
#[1 2 3 4 5]
#[1 2 0 0 0 3 4 5]
#[1 2 3 4 5]
#[1 2 3 4 5]
#[1 2 3 0 0 0 4 5]
#[1 2 3 4 5]
#[1 2 3 4 5]
#[1 2 3 4 0 0 0 5]
#[1 2 3 4 5]
您要做的实际上是称为填充,并且有一个现成的函数供您使用,比如
np.pad
。你知道吗np.pad
的基本用法是其中
var
是具有形状[A, B]
的秩2张量,返回的张量具有形状[A + left1 + right1, B + left2 + right2]
。你知道吗left1, right1, left2, right2, A, B
的含义可以用以下图片来解释:把这个公式推广到秩n张量是很容易的。但为了简单起见,我只写秩-2张量作为例子。你知道吗
有关更复杂的用法,请参见numpy.pad。你知道吗
在幕后
insert
只是在做:相关问题 更多 >
编程相关推荐