Python 函数的作用是什么?输出用于什么?

Python 函数的作用是什么?输出用于什么?,python,arrays,numpy,indexing,numpy-ndarray,Python,Arrays,Numpy,Indexing,Numpy Ndarray,下面显示了numpy.ix()函数的输出。输出的用途是什么?它的结构非常独特 import numpy as np >>> gfg = np.ix_([1, 2, 3, 4, 5, 6], [11, 12, 13, 14, 15, 16], [21, 22, 23, 24, 25, 26], [31, 32, 33, 34, 35, 36] ) >>> gfg (array([[[[1]]], [[[2]]], [[[3]

下面显示了
numpy.ix()
函数的输出。输出的用途是什么?它的结构非常独特

import numpy as np

>>> gfg = np.ix_([1, 2, 3, 4, 5, 6], [11, 12, 13, 14, 15, 16], [21, 22, 23, 24, 25, 26], [31, 32, 33, 34, 35, 36] )
>>> gfg
(array([[[[1]]],


       [[[2]]],


       [[[3]]],


       [[[4]]],


       [[[5]]],


       [[[6]]]]), array([[[[11]],

        [[12]],

        [[13]],

        [[14]],

        [[15]],

        [[16]]]]), array([[[[21],
         [22],
         [23],
         [24],
         [25],
         [26]]]]), array([[[[31, 32, 33, 34, 35, 36]]]]))

它基本上用于创建N个数组掩码或索引数组,每个数组引用不同的维度。 例如,如果我有一个3d np.ndarray,并且我只想获取其中的一些条目,我可以使用numpy.ix创建3个数组,这些数组的形状类似于(N,1,1)(1,N,1)和(1,1,N),包含3个轴中每个轴的相应索引

请看下面的示例。它们是不言自明的。
此函数不常用。 我认为它用于一些代数运算,如叉积和它的推广。

根据:

从多个序列构造开放网格。 此函数获取N个一维序列并返回N个输出,每个输出都有N个维度,这样形状在除一个维度外的所有维度中都是1,而具有非单位形状值的维度在所有N个维度中循环。 使用ix_uu可以快速构造索引数组,对叉积进行索引。[np.ix([1,3],[2,5])返回数组[[a[1,2]a[1,5]],[a[3,2]a[3,5]]

的主要用途是创建开放网格,以便我们可以使用它从数组(特定子数组)中选择特定索引。一个容易理解的例子是:

假设您有一个形状为
(5,5)
的二维数组,并且希望选择通过选择行
1
3
以及列
0
3
构建的子数组。您可以使用
np.ix
创建(索引)网格,以便能够选择子阵列,如下例所示:

a = np.arange(5*5).reshape(5,5)
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]

sub_indices = np.ix_([1,3],[0,3])
(array([[1],
       [3]]), array([[0, 3]]))

a[sub_indices]
[[ 5  8]
 [15 18]]
这基本上是从
a
中选择的子数组,它位于行
数组([[1],[3]])
和列
数组([[0,3]])

第0列第3列
|        |
v v
[[ 0  1  2  3  4]   

[5 6 7 8 9]我读过
numpy.ix()文档
。非常简短。您能为我的问题提供更详细、更简单的解释吗?例如,详细说明在@SunBear中何时以及如何使用它。文档已完成。请指出一个具体问题。堆栈溢出无法替代numpy的优秀文档。如果您有文档的某些特定部分存在问题,但这只是未能解决问题read@MadPhysicist你的评论带有评判性和专横性。这与SO鼓励人们通过提问学习的精神背道而驰。我读过numpy文档,但不理解,因此我的问题是我试图学习。请不要怀疑我学习的努力n、 @MadPhysicast,我也被告知海报-“阅读文档。”熊,我认为文档中的第一个示例非常好地展示了2d索引的使用。你的示例更复杂,但同样的解释适用。它是一个(5,1,1,1)、(1,5,1,1)、(1,1,5,1)和(1,1,1,1,5,1)数组的元组,可以用来选择(6,6,6)阻止一个更大的4d数组。这也是一个Python函数,因此您可以阅读代码本身。@SunBear:如果您阅读了文档中的某个内容,但不理解它,请在提问时指出文档中您不理解的特定内容。否则,您邀请的答案将无法澄清您的实际想法由使用。假设文档不存在,并且有人发布文档内容作为您问题的答案。您会在该答案下留下什么评论,以及您会要求回答者澄清什么?将该评论的材料提前纳入您的问题,我们将更好地为您提供帮助。Tha谢谢你出色的简化解释。我了解该函数的功能以及如何使用它。;)
 col 0    col 3
   |        |
   v        v
[[ 0  1  2  3  4]   
 [ 5  6  7  8  9]   <- row 1
 [10 11 12 13 14]
 [15 16 17 18 19]   <- row 3
 [20 21 22 23 24]]