Python numpy索引混乱

Python numpy索引混乱,python,numpy,Python,Numpy,我是python的新手,我正在研究一个类似如下的代码: import numpy as np a = np.ones([1,1,5,5], dtype='int64') b = np.ones([11], dtype='float64') x = b[a] print (x.shape) # (1, 1, 5, 5) 我查看了pythonnumpy文档,没有发现任何与这种情况相关的内容。我不知道这里发生了什么,也不知道去哪里找 编辑 实际代码 def gausslabel(length=18

我是python的新手,我正在研究一个类似如下的代码:

import numpy as np

a = np.ones([1,1,5,5], dtype='int64')
b = np.ones([11], dtype='float64')
x = b[a]
print (x.shape)
# (1, 1, 5, 5)
我查看了python
numpy
文档,没有发现任何与这种情况相关的内容。我不知道这里发生了什么,也不知道去哪里找

编辑 实际代码

def gausslabel(length=180, stride=2):
    gaussian_pdf = signal.gaussian(length+1, 3)
    label = np.reshape(np.arange(stride/2, length, stride), [1,1,-1,1])
    y = np.reshape(np.arange(stride/2, length, stride), [1,1,1,-1])
    delta = np.array(np.abs(label - y), dtype=int)
    delta = np.minimum(delta, length-delta)+length/2
    return gaussian_pdf[delta]

我猜这段代码试图证明,如果使用数组对数组进行索引,结果是一个与索引数组形状相同的数组(在本例中为
a
),而不是索引数组(即
b

但是它很混乱,因为
b
中充满了
1
s。而是用一个充满不同数字的
b
来尝试这一点:

>> a = np.ones([1,1,5,5], dtype='int64')
>> b = np.arange(11) + 3
array([ 3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13])
>>> b[a]
array([[[[4, 4, 4, 4, 4],
         [4, 4, 4, 4, 4],
         [4, 4, 4, 4, 4],
         [4, 4, 4, 4, 4],
         [4, 4, 4, 4, 4]]]])

因为
a
1
s的数组,所以
b
中唯一被索引的元素是
b[1]
,它等于
4
。不过,结果的形状是
a
的形状,即用作索引的数组。

您使用的是更改数组输出的ndarray索引。检查文档。@SandeepKadapa您所说的阵列是什么意思?因为在这种情况下,
a
b
都没有改变。@但它改变了数组的输出。在我之前的评论中,链接也给出了类似的例子。我想我现在清楚了。输出形状实际上让人困惑。谢谢