【发布时间】:2019-05-17 09:33:09
【问题描述】:
我有一个零数组 (17520,5),我想用两个值填充:0 和 0.05。我有两个条件,我正在使用函数 np.where,但是,我只需要在数组的特定索引处应用第二个条件。我使用的代码如下:
independent = np.zeros([17520,5])
w1 = np.where(independent == 0)
independent[w1] = np.random.choice([0.0, 0.05], size=len(w1[0]))
这部分代码工作正常,并用所需的值填充零数组(独立):0 和 0.05 具有相同的比例 (50/50)。另一方面,第二个条件只需要在特定索引处实现,如下所示:
for n in range(0, 365):
start = 24 + n*48
end = 46 + n*48
w2 = np.where(independent == 0.05)
independent[w2][start:end,0:5]=np.random.choice([0.0, 0.05], (22,5),size=len(w2[0]))
其中 [start:end,0:5] 表示我要实现条件 w2 的索引。
非常感谢您的帮助,指出使用带有索引的函数 np.where 的正确方法,因为目前我遇到以下错误
SyntaxError: invalid syntax
【问题讨论】:
-
问题出在
np.random.choice()。(22,5)和len(w2[0])都是同一变量size的输入。 -
我只留下 (22,5) 并且出现以下错误 IndexError: too many indices for array
-
现在问题出在
independent[w2][start:end,0:5]。您提供的索引过多,在第二个方括号中,应该只有start:end和0:5之间的一个。或者你必须删除第一个方括号。 -
independent[w2] 是副本,不是视图
标签: python performance numpy