python - 按索引复制 numpy 数组的单个轴

标签 python numpy

我正在寻找一种优雅的方法来通过索引提取 numpy 数组的单个轴的值。例如:

x = np.arange(16).reshape((4,4))
a = x[0]
b = x[:, 0] 

这是我通常做的事情,但是我正在寻找类似的东西:

a = get( x, axis=0, index=0)
b = get( x, axis=1, index=0)

是否有一些奇特的功能可以做到这一点?

最佳答案

您可以使用np.rollaxis将您感兴趣的轴移到前面,然后像平常一样对其进行索引:

def get(x, axis=0, index=0):
    return np.rollaxis(x, axis, 0)[index]

x = np.arange(27).reshape(3, 3, 3)

assert np.all(get(x, 1, 2) == x[:, 2, :])

正如 Joe 正确指出的那样,这将返回 x 的 View 。为了强制进行复制,您可以使用 .copy() 方法:

cpy = get(x, 1, 2).copy()

关于python - 按索引复制 numpy 数组的单个轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29147179/

相关文章:

python - 使用 pyodbc 从 MSSQL 中提取值

python - 向量化切片的最小值和最大值可能吗?

python - 忽略对角线的 Numpy 数组的最小值

python - 迭代定义的 Numpy 数组创建

python - 循环遍历字典键的元素而不是枚举所有元素

python - 对非时间数据进行上采样

python - 从大型歌手中寻找最匹配的词

python - 将 HTML 实体转换为 Unicode,反之亦然

python - 如何实现高斯分布的概率密度函数

python - Numpy.delete 删除 3 个项目,但仅删除 2 个匹配条件