要索引 numpy 数组的中点,您可以这样做:
x = np.arange(10)
middle = x[len(x)/4:len(x)*3/4]
是否有索引数组中间的简写?例如,n
or2n
元素接近len(x)/2
? 有一个很好的n维版本吗?
正如cge所说,最简单的方法是将其转换为 lambda 函数,如下所示:
x = np.arange(10)
middle = lambda x: x[len(x)/4:len(x)*3/4]
或者n维方式是:
middle = lambda x: x[[slice(np.floor(d/4.),np.ceil(3*d/4.)) for d in x.shape]]
迟到了,但对于遇到这个问题的其他人来说:一个更顺畅的方法是使用 numpy 的take
或put
.
要解决数组的中间问题,您可以使用put
单个索引来索引 n 维数组。从数组中获取值也是如此take
假设您的数组具有奇数个元素,则数组的中间将是其大小的一半。通过使用整数除法(//
而不是/
),您不会在这里遇到任何问题。
import numpy as np
arr = np.array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
# put a value to the center
np.put(arr, arr.size // 2, 999)
print(arr)
# take a value from the center
center = np.take(arr, arr.size // 2)
print(center)