首页 > 解决方案 > Numpy索引和新数组的创建

问题描述

我试图了解 print 语句中发生了什么。我知道正在创建索引以创建 2D 数组但是,我不明白顺序

x = np.arange(0,2*np.pi,0.001)
X = np.concatenate(([x], [np.ones(y.shape[0])]), axis=0)

print(X[[[0,1],[0,1]],[[0,0],[-1,-1]]])

产生:

array([[0.   , 1.   ],
       [6.283, 1.   ]])

标签: pythonpython-3.xnumpy

解决方案


我查看了文档,我认为下面的示例应该解释该索引:

应使用高级索引从 4x3 数组中选择角元素。因此,需要选择列是 [0, 2] 之一并且行是 [0, 3] 之一的所有元素。要使用高级索引,需要明确选择所有元素。使用前面解释的方法可以写:

x = array([[0, 1, 2],
           [3, 4, 5],
           [6, 7, 8],
           [9, 10, 11]])
rows = np.array([[0, 0],
                 [3, 3]], dtype=np.intp)
columns = np.array([[0, 2],
                    [0, 2]], dtype=np.intp)
x[rows, columns]

最后一行给

array([[0, 2],
       [9, 11]])

您问题中的代码似乎与该示例执行相同的操作(但使用其他值),但直接抨击索引而不是创建rowsand columns

X[[[0, 1], [0, 1]], [[0, 0], [-1, -1]]]可能被读作 get 元素,从0: (在0第 th 或1st 行)和(在0th 或最后一列)开始计数


推荐阅读