现在我有这个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,第四个元素等等.所以前两行需要看起来像这样:
[[ 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循环的情况下更有效地完成它.但我坚持我能做到这一点.所以我希望有人可以帮助我!
最佳答案 只需使用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