二维数组-切片和索引

时间:2020-07-05 16:53:02

标签: python arrays numpy

考虑以下代码:

arr = np.random.randn(3,3)
print(arr)

>>> array([[-0.46734444,  0.56493252, -0.26263957],
           [-0.08779416, -2.29891065, -0.49095811],
           [-1.75290304,  0.21304592, -0.91466817]])

我尝试使用以下两种方法获得右上角的2 X 2方阵:

print(arr[:2,1:])    
print(arr[:2][1:]) 

>>> [[ 0.56493252 -0.26263957]
     [-2.29891065 -0.49095811]]

>>> [[-0.08779416 -2.29891065 -0.49095811]]

但是,第二种方法给出了错误的答案。我不了解第二种方法的行为。请解释!!

1 个答案:

答案 0 :(得分:2)

  1. 行索引和列索引从0开始
  2. 按列表切片时,起始索引为包含索引,结束索引为专有索引。例如,arr[:2]将为您提供row[0]row[1]
  3. 的列表

print(arr[:2,1:])

  1. 您要获取row[0]row[1]并从2行的第一列开始获取所有列。

print(arr[:2][1:])

  1. 您正在通过row[0]row[1]arr[:2]
  2. 您再次从上一个结果中仅获得第一行。

希望这会有所帮助。