我想知道是否有更多的pythonic(和有效)方式执行以下操作:
MAX_SIZE = 100
nbr_elements = 10000
y = np.random.randint(1, MAX_SIZE, nbr_elements)
REPLACE_EVERY_Nth = 100
REPLACE_WITH = 120
c = 0
for index, item in enumerate(y):
c += 1
if (c % REPLACE_EVERY_Nth == 0):
y[index] = REPLACE_WITH
Run Code Online (Sandbox Code Playgroud)
所以基本上我从1到1生成一堆数字MAX_SIZE-1
,然后我想用它替换每个REPLACE_EVERY_Nth
元素REPLACE_WITH
.这工作正常但我想它可以以某种方式完成而不使用enumerate
?
我在想这样的事情(我知道这是错误的,因为我用y的索引替换原来的y):
y = map(lambda x: REPLACE_WITH if not x%REPLACE_EVERY_Nth else x, range(len(y)))
Run Code Online (Sandbox Code Playgroud)
有没有办法对索引进行模数但是替换值?
Sve*_*ach 23
使用切片REPLACE_EVERY_Nth
作为步长值:
y[::REPLACE_EVERY_Nth] = REPLACE_WITH
Run Code Online (Sandbox Code Playgroud)
这与您的代码略有不同,因为它将从第一个项目(即索引0)开始.要准确获取代码的功能,请使用
y[REPLACE_EVERY_Nth - 1::REPLACE_EVERY_Nth] = REPLACE_WITH
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6951 次 |
最近记录: |