我是Python的新手,我想检查我的s_i
数组是否包含-1
,如果包含它,则应将其乘以8
。因此它必须成为-8
。
但是当我实现我的代码时,我得到的行包含很多零。有人可以告诉我我在做什么错吗?这是我的代码:
import numpy as np
output=np.array([0,0,1,1,0])
s_i=np.array([1-1,1,1,1])
i= 0
while i<4:
if s_i[i]==-1:
s_i[i]=s_i[i*8]
s_i[i]=s_i[i]
print (s_i[i])
答案 0 :(得分:3)
您需要:
s_i = np.array([1,-1,1,1,1])
print(np.where(s_i==-1, s_i*8, s_i))
输出:
[ 1 -8 1 1 1]
答案 1 :(得分:0)
使用:
s_i[s_i == -1] *= 8
结果:
print (s_i)
[1 -8 1 1 1]
答案 2 :(得分:0)
您将numpy用作标记,因此使用专门的numpy方法可能是正确的选择。否则,您可以通过使用列表理解(或生成器表达式)来避免比较慢的循环:
data = [1-1,1,1,1]
y = [8*x if x == -1 else x for x in data]
print(y)