Python在一定范围内替换数组中的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python在一定范围内替换数组中的元素相关的知识,希望对你有一定的参考价值。

我有一个数组,例如:

Array = [100]*100

然后我想这样做:

Array[0:10] = 1

数组应如下所示:

Array = [1,1,1,1,1,1,1,1,1,1,100,100....,100]

但是Python说不,并且给了我

Array[0:10] = 1 can only assign an iterable

它想要什么,我该如何解决?

答案

你可以使用array[0:10] = [1] * 10,你只需要制作一个你要替换的切片大小的数组。

另一答案

另一种方法是将你的列表变成一个numpy数组,numpy将broadcast你的值放到数组的整个部分:

import numpy as np

a = np.array([100]*100)

a[0:10] = 1
print(a)

# array([  1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 100, 100, 100,
#        100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
#        ... 
#       ])
另一答案

我给你一个列表的例子:

L = [0 for k in range(100)] # List of 0
L[10:20] = [1 for k in range(10)]

# Output:
L = [0, ..., 0, 1, 1, ..., 1, 0, ..., 0]

您还需要提供一个列表来替换N值。

另一答案

在这种情况下,双方的操作数类型应该相同

Array[0:10]=[1]*10
另一答案

lists in python are mutable it's not good to write them in the form [100]*100. You might have problems later when your code gets complicated.

我建议把它写成:

array = [100 for _ in range(100)]
for i in range(10):
    array[i] = 1
print(array)

output: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]

以上是关于Python在一定范围内替换数组中的元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在一定范围内创建随机数组

将浮点数组规范化到一定范围内,并在 Python 中保持符号

在 O(1) 空间中的数组中查找重复元素(数字不在任何范围内)

WGAN将数值限制在一定范围内 Python代码 tf.clip_by_value(p, -0.01, 0.01))

剑指offer_查找数组中的任一重复元素

如何在一定程度范围内为UIView的旋转设置动画?