Numpy:如何在 numpy 中选择项目并为其赋值
Posted
技术标签:
【中文标题】Numpy:如何在 numpy 中选择项目并为其赋值【英文标题】:Numpy: how to select items in numpy and assign its value 【发布时间】:2020-09-07 14:09:28 【问题描述】:我在按列表分配新值时遇到问题。
我想通过 numpy 数组的索引更改 s numpy 中的 12 个项目值,我希望我选择的每个索引都是不同的。
所以我制作了一个列表 random.sample(range(0,len(s),12) 来选择 12 个不同的索引。通过这个索引更改 numpy 数组 s() 中的一些值
但是,我收到了错误:SyntaxError: can't assign to function call
import numpy as np
import random
N = 20
s = np.zeros([N])
alist = random.sample(range(0,20),12)
alist
for i in alist:
s(i)=10
【问题讨论】:
【参考方案1】:我不完全确定您要在这里实现什么,但 s(i)
是您的问题:圆括号表示函数调用,但 s
是一个 numpy 数组,所以这不起作用。我认为您正在尝试为列表编制索引,在这种情况下您会使用 s[i]
。
【讨论】:
我不是要索引列表。实际上我想通过 numpy 数组的索引更改 numpy 的 12 个项目值,我希望我选择的每个索引都是不同的。 这对我来说还不是很清楚,但也许您希望将 for 循环更改为for i in range(len(alist)): s[i]=10
,但是感觉就像我在黑暗中刺伤。如果您能提供预期的输出,那将会很有帮助。
再次感谢!例如s=(1,2,2,4,5,6)
我想通过其下标索引在s
中随机选择3。输出可以是s(0),s(1),s(3)
但不能像s(0),s(1),s(1)
,意味着它们每个下标必须不同。然后我改变三个他们的价值从他们的原始价值到 10.so s(0)=10,s(1)=10,s(3)=10
。这就是我想要的。
so alist=random.sample(range(0,len(s+1),3)
如果输出是alist=0,1,2
我会选择 s(0),s(1),s(2) 来改变它们的值。所以使用for i in alist
s(i)= alist
s(0)=10,s(1)=10,s(2)=10
以上是关于Numpy:如何在 numpy 中选择项目并为其赋值的主要内容,如果未能解决你的问题,请参考以下文章