【发布时间】:2018-05-29 08:11:05
【问题描述】:
我有:
>>> a
array([[1, 2],
[3, 4]])
>>> type(l), l # list of scalers
(<type 'list'>, [0, 1])
>>> type(i), i # a numpy array
(<type 'numpy.ndarray'>, array([0, 1]))
>>> type(j), j # list of numpy arrays
(<type 'list'>, [array([0, 1]), array([0, 1])])
当我这样做时
>>> a[l] # Case 1, l is a list of scalers
我明白了
array([[1, 2],
[3, 4]])
这意味着索引只发生在第 0 个轴上。
但是当我这样做时
>>> a[j] # Case 2, j is a list of numpy arrays
我明白了
array([1, 4])
这意味着索引发生在轴 0 和轴 1。
Q1:当用于索引时,为什么缩放器列表和numpy数组列表的处理方式有所不同? (案例 1 与案例 2)。在案例 2 中,我希望看到索引仅沿轴 0 发生并得到 p>
array( [[[1,2],
[3,4]],
[[1,2],
[3,4]]])
现在,当使用 numpy 数组代替时
>>> j1 = np.array(j) # numpy array of arrays
下面的结果表明索引只发生在轴 0(如预期)
>>> a[j1] Case 3, j1 is a numpy array of numpy arrays
array([[[1, 2],
[3, 4]],
[[1, 2],
[3, 4]]])
Q2:当用于索引时,为什么numpy数组的list和numpy数组的numpy数组有区别? (案例 2 与案例 3)
【问题讨论】:
-
对于 Q1,非 Numpy 模拟不是要使用
k = [[0,1], [0,1]]; a[k]吗?在这种情况下,您会在列表列表和 Numpy 数组列表之间看到相同的行为。 -
另一种看待它的方式是
[a[jj] for jj in j]为您提供了您对第一季度的期望。输入列表列表,无论是否为 Numpy 数组,基本上都是一次返回一组索引。