【问题标题】:Determining the shape of result array after slicing in Numpy在 Numpy 中切片后确定结果数组的形状
【发布时间】:2015-09-18 16:45:53
【问题描述】:

我很难理解在 numpy 中切片后如何确定结果数组的形状。例如,我正在使用以下简单代码:

import numpy as np


array=np.arange(27).reshape(3,3,3)

slice1 = array[:,1:2,1]
slice2= array[:,1,1]

print "Content in slice1 is  ", slice1
print "Shape of slice1 is ", slice1.shape
print "Content in slice2 is ",slice2
print "Shape of Slice2 is", slice2.shape

这个输出是:

Content in slice1 is 
 [[ 4]
  [13]
  [22]]
Shape of slice1 is  (3, 1)
Content in slice2 is  [ 4 13 22]
Shape of Slice2 is (3,)

在这两种情况下,内容都是相同的(应该如此)。但它们的形状不同。那么,最终的形状是如何由 numpy 确定的呢?

【问题讨论】:

标签: python arrays numpy


【解决方案1】:

基本上可以归结为这个——

In [118]: a = np.array([1,2,3,4,5])

In [119]: a[1:2]
Out[119]: array([2])

In [120]: a[1]
Out[120]: 2

当您执行a[1:2] 时,您要求的是一个包含 1 个元素的数组。

当您执行a[1] 时,您要求的是该索引处的元素。


你的情况也发生了类似的事情。

当你这样做时 - array[:,1:2,1] - 这意味着来自第一维的所有可能索引,来自第二维的索引子列表(尽管子列表仅包含一个元素),以及来自第三维的第一个索引。所以你得到了一个数组数组-

 [[ 4]
  [13]
  [22]]

当您这样做时 - array[:,1,1] - 这意味着来自第一维的所有可能索引、来自第二维的第一个索引和来自第三维的第一个索引。所以你得到一个数组 -

[4 13 22]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 2021-08-21
    • 2020-08-02
    • 1970-01-01
    • 2016-07-30
    相关资源
    最近更新 更多