- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我使用 numpy.mgrid
生成“坐标索引数组”
y, x = np.mgrid[0:3, 0:2]
print x
array([[0, 1],
[0, 1],
[0, 1]])
在许多情况下,我对这些数组进行切片(例如 x[0, :]
)并丢弃其余数据。有时,这些切片比原始数组小得多,计算起来很昂贵(即 np.mgrid[0:512, 0:512, 0:512]
)。 numpy 是否提供了与 [coord[view] for coord in np.mgrid[0:512, 0:512, 0:512]
不生成大型中间数组的等效项?
我意识到解决方案对于切片 [0,:]
来说是微不足道的,但我正在寻找一个通用的解决方案来处理索引 numpy 数组的任何有效方法
编辑
有些人要求提供具体示例,以了解 view
的外观。理想情况下,我希望有一个通用的解决方案来处理索引 ndarray 的任何有效方法。以下是上述 3x2 数组的几个具体示例:
1) view = (1, slice(None, None, 2))
2) view = (np.array([0,1]), np.array([0, 1]))
3) view = np.array([[False, False], [False, True], [False, False]])
我正在寻找类似的功能
def mgrid_with_view(array_shape, view)
...
这将返回等价于 [o[view] for o in np.indices(array_shape)]
而无需不必要的计算或内存。
最佳答案
正如 HYRY 所提到的,我相信您要避免的是创建完整数组。 mgrid
创建一个完整的数组,但是如果您使用:
x, y = np.broadcast_arrays(*np.ogrid[0:2,0:3])
x
和 y
比 np.arange(0,2)
(和 np.arange( 0,3)
),同时表现得好像每个都是一个完整的数组。如果您需要一个大的结果数组,您可能应该将这些数组单独切片,然后将它们连接起来。 (np.broadcast_arrays 返回数组的元组而不是数组)
关于python - 索引到 numpy mgrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12031128/
如何将 numpy.mgrid 与可变数量的索引一起使用?除了硬编码值之外,我在 github 上找不到任何使用它的示例。 import numpy as np np.mgrid[1:10, 1:10
我正在尝试使用 numpy.mgrid 创建两个网格数组,但我想要一种方法来插入一个变量作为步数。 没有可变数量的步骤,numpy.mgrid 使用此代码按预期工作: x, y = np.mgrid[
我使用 numpy.mgrid 生成“坐标索引数组” y, x = np.mgrid[0:3, 0:2] print x array([[0, 1], [0, 1], [0
我使用 numpy.mgrid 有一段时间了,我很熟悉它的作用。但从那以后,我一直想知道它到底是什么…… mgrid 的典型用例和语法是 xx, yy = mgrid[0:5, 0:3] 令我困扰的是
我想知道如何使用 numpy mgrid 为未知数量的维度 (D) 创建网格(多维数组),每个维度都有下限和上限以及箱数: n_bins = numpy.array([100 for d in n
有人可以向我解释这段代码的第二行是做什么的吗? objp = np.zeros((48,3), np.float32) objp[:,:2] = np.mgrid[0:8,0:6].T.reshape
我正在寻找类似网格的功能的清晰比较。可惜没找到! Numpy http://docs.scipy.org/doc/numpy/reference/提供 mgrid ogrid 网格 Scitools
我无法理解下面的代码。这里的步进参数是怎么计算的呢? j 是做什么用的?这不是一个复数吗? import scipy scipy.mgrid[1:6:4j] 最佳答案 scipy.mgrid[1:6:
我是一名优秀的程序员,十分优秀!