如何在没有for循环Python的情况下获得相同的数组输出

时间:2018-02-19 11:12:30

标签: python arrays numpy

现在我有这个numpy数组:

[[   0    9   18   27   36   45   54   63   72   81   90   99]
 [ 108  117  126  135  144  153  162  171  180  189  198  207]
 [ 216  225  234  243  252  261  270  279  288  297  306  315]
 [ 324  333  342  351  360  369  378  387  396  405  414  423]
 [ 432  441  450  459  468  477  486  495  504  513  522  531]
 [ 540  549  558  567  576  585  594  603  612  621  630  639]
 [ 648  657  666  675  684  693  702  711  720  729  738  747]
 [ 756  765  774  783  792  801  810  819  828  837  846  855]
 [ 864  873  882  891  900  909  918  927  936  945  954  963]
 [ 972  981  990  999 1008 1017 1026 1035 1044 1053 1062 1071]
 [1080 1089 1098 1107 1116 1125 1134 1143 1152 1161 1170 1179]
 [1188 1197 1206 1215 1224 1233 1242 1251 1260 1269 1278 1287]]

我想做的是从每一列,第一个元素需要+ 0,第二个元素+1,第三个+2,第四个+3等等。所以前两行需要看起来像这样: / p>

[[   0    10   20   30   40   50   60   70   80   90   100   110]
 [ 108  118 128  138  148  158  168  178  188  198  208  218]

我已经有以下代码:

nw = [x for x in np.hsplit(array, array.shape[1])]
column = 0
upd = []
for x in nw:
    x += column
    column += 1
    upd.append(x)

nw2 = np.reshape(upd,(12,12))
nw3 = np.hsplit(nw2,12)
nw4 = np.reshape(nw3,(12,12))
nw4

这给出了我想要的输出。但事情就是这样,我希望在(我更喜欢)1行代码和没有for循环的情况下更有效地完成它。但我坚持我能做到这一点。所以我希望有人可以帮助我!

1 个答案:

答案 0 :(得分:7)

只需使用a+b,其中b=arange(N)N是列数。

import numpy as np
a = np.array([[   0,    9,   18,   27,   36,   45,   54,   63,   72,   81,   90, 99],
       [ 108,  117,  126,  135,  144,  153,  162,  171,  180,  189,  198, 207],
       [ 216,  225,  234,  243,  252,  261,  270,  279,  288,  297,  306, 315],
       [ 324,  333,  342,  351,  360,  369,  378,  387,  396,  405,  414, 423],
       [ 432,  441,  450,  459,  468,  477,  486,  495,  504,  513,  522, 531],
       [ 540,  549,  558,  567,  576,  585,  594,  603,  612,  621,  630, 639],
       [ 648,  657,  666,  675,  684,  693,  702,  711,  720,  729,  738, 747],
       [ 756,  765,  774,  783,  792,  801,  810,  819,  828,  837,  846, 855],
       [ 864,  873,  882,  891,  900,  909,  918,  927,  936,  945,  954, 963],
       [ 972,  981,  990,  999, 1008, 1017, 1026, 1035, 1044, 1053, 1062, 1071],
       [1080, 1089, 1098, 1107, 1116, 1125, 1134, 1143, 1152, 1161, 1170, 1179],
       [1188, 1197, 1206, 1215, 1224, 1233, 1242, 1251, 1260, 1269, 1278, 1287]])

b = np.arange(a.shape[1])

result = a + b