为什么会生成两个结果?

时间:2019-02-08 01:16:19

标签: python numpy

In [18]: z = np.array([[6,7,3],[8,8,8]])                                                                                                                                                      

In [19]: z                                                                                                                                                                                    
Out[19]: 
array([[6, 7, 3],
       [8, 8, 8]])

In [20]: print(z[0:, :0])                                                                                                                                                                     
[]

In [21]: print(z[1:, :1])                                                                                                                                                                     
[[8]]

我不明白这两个印刷声明。例如z [1 :,:1]?

1 个答案:

答案 0 :(得分:0)

制作一个数组,其中每个值都不同:

In [134]: z = np.arange(6).reshape(2,3)
In [135]: z
Out[135]: 
array([[0, 1, 2],
       [3, 4, 5]])

尝试在0分片上进行变化:

In [136]: z[0:,:]
Out[136]: 
array([[0, 1, 2],
       [3, 4, 5]])
In [137]: z[:,:0]
Out[137]: array([], shape=(2, 0), dtype=int64)
In [138]: z[0:,:0]
Out[138]: array([], shape=(2, 0), dtype=int64)

'0:'与':'和'::'和slice(None,None,None)相同,都表示整个事物或维度。

':0'表示'0:0',它是一个空切片,因此尺寸为0。

现在1个切片上的变化:

In [139]: z[1:,:]
Out[139]: array([[3, 4, 5]])
In [140]: z[:,:1]
Out[140]: 
array([[0],
       [3]])
In [141]: z[1:,:1]
Out[141]: array([[3]])

'1:',除了第一个切片以外的所有切片;对于尺寸为2的尺寸,即尺寸为“ 1:2”的尺寸为1的切片。 ':1'也是'0:1'另一个大小为1的切片,因此形状为(1,1)。