使用逗号的Numpy数组切片

2024-04-25 03:58:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习numpy数组切片。在

但这是一个我似乎无法理解的语法。在

做什么

一个[:1]做。在

我用python运行它。在

a = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
a = a.reshape(2,2,2,2)
a[:1]

输出:

^{pr2}$

有人能给我解释一下切片的原理吗。文档似乎没有回答这个问题。在

另一个问题是有没有一种方法可以使用类似

在np.数组(1:16)或者类似于python中

x = [x for x in range(16)]

Tags: 方法in文档numpyfornp语法切片
3条回答

要回答问题的第二部分(生成序列值数组),可以使用^{}^{}。这两个函数都返回一个numpy数组和相应的值范围。在

切片中的逗号用于分隔可能具有的各种维度。在第一个示例中,您将重塑数据,使其具有4个维度,每个维度的长度为2。这可能有点难以想象,因此如果从二维结构开始,可能会更有意义:

>>> a = np.arange(16).reshape((4, 4))
>>> a
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11],
           [12, 13, 14, 15]])
>>> a[0]  # access the first "row" of data
    array([0, 1, 2, 3])
>>> a[0, 2]  # access the 3rd column (index 2) in the first row of the data
    2

如果要使用切片访问多个值,可以使用冒号来表示范围:

^{pr2}$

您也可以执行以下步骤:

>>> a[::2, ::2]  # get every other element (column-wise and row-wise)
    array([[ 0,  2],
          [ 8, 10]])

希望有帮助。一旦这样做更有意义,您可以使用Nonenp.newaxis或使用...省略号添加维度:

>>> a[:, None].shape
    (4, 1, 4)

您可以在此处找到更多信息:http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

当我们继续研究shape和单个条目时,可能会有所收获。在

让我们从

>>> a = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
>>> a.shape
(16, )

这是一个长度为16的一维数组。在

现在让我们试试

^{pr2}$

它是一个四维的多维数组。在

让我们看看0,1元素:

>>> a[0, 1]
array([[5, 6],
   [7, 8]])

因为还有两个维度,所以这是一个二维矩阵。在


现在a[:, 1]说:取a[i, 1作为i的所有可能值:

>>> a[:, 1]
array([[[ 5,  6],
    [ 7,  8]],

   [[13, 14],
    [15, 16]]])

它提供了一个数组,其中第一项是a[0, 1],第二项是a[1, 1]。在

相关问题 更多 >