np.array(或vstack)列切片如何工作?

时间:2017-11-25 11:47:15

标签: python numpy

为什么在:

import numpy as np
a = [1, 2 ,3]
b = [4, 5, 6]
t= np.array(([a,b])
print(t[1:])
print(t[:0])
print(t[:1])
print(t[:2])

第一列和第二列的结果是:

[[4 5 6]]
[]
[[1 2 3]]
[[1 2 3]
 [4 5 6]]

如果数组是:

[[1 2 3]
 [4 5 6]]

为什么然后:

  • 第一行t[1:]不是[4 5 6]
  • 第一栏t[:0]不是[1, 4]
  • 第二列t[:1]不是[2, 5]
  • 第二列t[:3]不是[3, 6] ? 如何概念化这个?

1 个答案:

答案 0 :(得分:1)

在您的代码中,t是一个2-dim数组。在这种情况下,t.shape应为(2, 3)。第一个dim 2用于行,第二个dim 3用于列。

请注意,每个索引应以逗号,分隔,例如t[0, 1]。这表示第一行和第二列的元素。

如果只使用一个索引,例如t[1],numpy会将其视为行的索引。因此,t[1, :]会得到相同的结果。

  
      
  • 第一行t [1:]不是[4 5 6]
  •   

这可能来自[0:][1:]应具有类似结果的约束。 [1:]只是一种特殊情况,只选择了一行。 [4 5 6]可以t[1 ,:]切片。

  
      
  • 第一列t [:0]不是[1,4]和
  •   

如上所述,当只有一个索引被送入2-dim数组时,索引将被视为行。空结果是因为[:0]表示什么都没有。您可以使用list(range(0))看到类似的现象。

  
      
  • 第二列t [:1]不是[2,5]和
  •   

如果您想获得第二列,请输入t[:, 1]

  • 第二栏t [:3]不是[3,6]?

- >这应该是t[;, 2]