首页 > 解决方案 > 在 Python 中的特定列中广播二维数组

问题描述

我有一个这样的数组:

A = np.array([[ 1, 2, 3, 4, 5],
              [ 6, 7, 8, 9, 10],
              [11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20]])

我想要做的是在第一列和最后一列的每个值上加 1。我想通过使用这个和适当的向量来理解广播(避免循环),但我已经尝试过,但它不起作用。预期成绩:

A = np.array([[ 2, 2, 3, 4, 6],
                   [ 7, 7, 8, 9, 11],
                   [12, 12, 13, 14, 16],
                   [17, 17, 18, 19, 21]])

标签: pythonnumpymultidimensional-arraybroadcasting

解决方案


您可以使用 numpyindexing来执行此操作。尝试这个:

# 0 is the first and -1 is the last column
A[:,[0,-1]]  = A[:,[0,-1]]+1  

或者

A[:,(0,-1)]  = A[:,(0,-1)]+1 

或者

A[:,[0,-1]]+=1

或者

A[:,(0,-1)]+=1 

两种情况下的输出

array([[ 2,  2,  3,  4,  6],
       [ 7,  7,  8,  9, 11],
       [12, 12, 13, 14, 16],
       [17, 17, 18, 19, 21]])

推荐阅读