繁体   English   中英

为什么 numpy 在一维切片上以这种方式工作?

[英]Why numpy works of this way on 1d slicing?

您好,我正在检查 numpy 中的切片,我有以下两个代码:

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
arr[0:2, 1:4]

返回

[[2, 3, 4], [7, 8, 9]]

在第一种情况下,索引 go 从 0 到 2

[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
  0  1  2  3  4    0  1  2  3  4

在第一个切片 [0:2] 中选择 3 个第 2 位数

2, 3, 4

但在第二个不是,np 只得到 3 个数字,而不是像另一个一样的 4 个。

为什么其中一个在这种情况下选择结束 2,但在另一种情况下不是?

对于 1D,不考虑相同的行为和结束索引。

谢谢。

无论如何,它都没有选择结束索引。

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
arr[0:2, 1:4]
0 ⇢[[1, 2, 3, 4, 5],
1 ⇢ [6, 7, 8, 9, 10]]
      ⇡  ⇡  ⇡  ⇡   ⇡
      0  1  2  3  4

在第一个切片0:2中,拾取 2 个元素01 ,这导致

0 ⇢[1, 2, 3, 4, 5]
1 ⇢[6, 7, 8, 9, 10]

然后,在其中的每一个中,都会选择123 rd 元素( 1:4 ),从而导致

0 ⇢[2, 3, 4]
1 ⇢[7, 8, 9]
     ⇡  ⇡  ⇡   
     1  2  3  

也许这个例子对你有帮助。 我推荐这个: 了解切片

arr = np.array([
#col:0 , 1,  2,  3,  4
    [1,  2,  3,  4,  5],  # <- row : 0
    [6,  7,  8,  9,  10], # <- row : 1
    [11, 12, 13, 14, 15]  # <- row : 2
])

# Slicing : 0:2 -> 0,1
# Slicing : 1:4 -> 1,2,3
arr[ 0:2,  1:4]
#   ^row^ ^col^

Output:

array([[2, 3, 4],
       [7, 8, 9]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM