gpt4 book ai didi

python - Numpy append 和普通 append

转载 作者:行者123 更新时间:2023-12-01 08:39:38 33 4
gpt4 key购买 nike

x = [[1,2],[2,3],[10,1],[10,10]]

def duplicatingRows(x, l):
severity = x[l][1]
if severity == 1 or severity == 2:
for k in range(1,6):
x.append(x[l])

for l in range(len(x)):
duplicatingRows(x,l)

print(x)

x = np.array([[1,2],[2,3],[10,1],[10,10]])

def duplicatingRows(x, l):
severity = x[l][1]
if severity == 1 or severity == 2:
for k in range(1,6):
x = np.append(x, x[l])

for l in range(len(x)):
duplicatingRows(x,l)

print(x)

我希望它打印一个带有额外 append 行的数组。给出 [[1, 2], [2, 3], [10, 1], [10, 10], [1, 2], [1, 2], [1, 2] 的列表, [1, 2], [1, 2], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1]]。为什么它不起作用?我也尝试了不同的连接组合,但没有成功。

最佳答案

您的代码中有一些错误。这是代码的一点改进、正确和(部分)矢量化实现,可打印您所需的输出。

在这里我们利用numpy.tile用于重复行,然后进行 reshape ,以便我们可以沿轴 0 append 它,这正是我们所需要的。

In [24]: x = np.array([[1,2],[2,3],[10,1],[10,10]]) 

def duplicatingRows(x, l):
severity = x[l][1]
if severity == 1 or severity == 2:
# replaced your `for` loop
# 5 corresponds to `range(1, 6)`
reps = np.tile(x[l], 5).reshape(5, -1)
x = np.append(x, reps, axis=0)
return x

for l in range(len(x)):
x = duplicatingRows(x,l)

print(x)

输出:

[[ 1  2]
[ 2 3]
[10 1]
[10 10]
[ 1 2]
[ 1 2]
[ 1 2]
[ 1 2]
[ 1 2]
[10 1]
[10 1]
[10 1]
[10 1]
[10 1]]

关于python - Numpy append 和普通 append ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53567301/

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