如何在numpy数组上迭代每个第5个索引

时间:2017-08-20 03:53:25

标签: arrays numpy

我想在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

请建议我犯错的地方。为什么输出高于一? 在此先感谢!

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