我想在python中学习一个非常基本的逻辑。我有两个numpy数组。 我想从一个数组中减去另一个数组中的每个第5个索引。 到目前为止,我已尝试使用以下代码:
x=np.arange(25,100).reshape(25,3)
y=x[:,0]
z=x[:,1]
for i in range(0,25,5): # Till These 2 loop looks fine
print y[i]
for j in range(0,25,5):
print z[j]
# Problems portion
for i in range(0,25,5):
for j in range(0,25,5):
print y[i]-z[j]
-1
-16
-31
-46
-61
14 #Output
-1
-16
-31
-46
29
14
-1
-16
-31
44
29
14
-1
-16
59
44
29
14
-1
请建议我犯错的地方。为什么输出高于一? 在此先感谢!
答案 0 :(得分:3)
你错过了numpy的简单之美。
>>> y - z
array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1])
要减去每五个位置,请使用切片表示法:
>>> y[::5] - z[::5]
array([-1, -1, -1, -1, -1])
无论如何,你也在迭代所有对,而不是只在同一位置成对。要按照自己的方式进行操作,只需使用一个循环:
>>> for i in range(0,25,5):
... print(y[i] - z[i])
-1
-1
-1
-1
-1