我想创建一个2d numpy数组,其中每个元素都是其索引的元组。
范例(4x5):
array([[[0, 0],
[0, 1],
[0, 2],
[0, 3],
[0, 4]],
[[1, 0],
[1, 1],
[1, 2],
[1, 3],
[1, 4]],
[[2, 0],
[2, 1],
[2, 2],
[2, 3],
[2, 4]],
[[3, 0],
[3, 1],
[3, 2],
[3, 3],
[3, 4]]])
我将创建list
具有以下列表理解的python :
[[(y,x) for x in range(width)] for y in range(height)]
是否有更快的方法可以达到相同的效果,也许使用numpy方法?
这是一个基于初始化的方法-
def create_grid(m,n):
out = np.empty((m,n,2),dtype=int) #Improvement suggested by @AndrasDeak
out[...,0] = np.arange(m)[:,None]
out[...,1] = np.arange(n)
return out
样品运行-
In [47]: create_grid(4,5)
Out[47]:
array([[[0, 0],
[0, 1],
[0, 2],
[0, 3],
[0, 4]],
[[1, 0],
[1, 1],
[1, 2],
[1, 3],
[1, 4]],
[[2, 0],
[2, 1],
[2, 2],
[2, 3],
[2, 4]],
[[3, 0],
[3, 1],
[3, 2],
[3, 3],
[3, 4]]])
到目前为止针对(4,5)
网格化和更大尺寸发布的所有方法的运行时测试-
In [111]: %timeit np.moveaxis(np.indices((4,5)), 0, -1)
...: %timeit np.mgrid[:4, :5].swapaxes(2, 0).swapaxes(0, 1)
...: %timeit np.mgrid[:4,:5].transpose(1,2,0)
...: %timeit create_grid(4,5)
...:
100000 loops, best of 3: 11.1 µs per loop
100000 loops, best of 3: 17.1 µs per loop
100000 loops, best of 3: 17 µs per loop
100000 loops, best of 3: 2.51 µs per loop
In [113]: %timeit np.moveaxis(np.indices((400,500)), 0, -1)
...: %timeit np.mgrid[:400, :500].swapaxes(2, 0).swapaxes(0, 1)
...: %timeit np.mgrid[:400,:500].transpose(1,2,0)
...: %timeit create_grid(400,500)
...:
1000 loops, best of 3: 351 µs per loop
1000 loops, best of 3: 1.01 ms per loop
1000 loops, best of 3: 1.03 ms per loop
10000 loops, best of 3: 190 µs per loop
问题内容: 我正在尝试创建一个表格,其中每一行都是一个表格。我希望每个输入都在不同的表分区中,但是例如,我仍然需要所有所有第一个输入都属于同一个表头,依此类推。 我想做的是一个可编辑的网格 ,或多或少这样: 但是显然我不能以这种方式排列标签(或者w3c验证程序所说的也是如此)。 有什么好办法吗? 问题答案: 如果你想要一个“编辑网格”,即像结构的表格,可以让你做任何行的形式,使用CSS,模仿表标签
本文向大家介绍一个数组,除一个元素外其它都是两两相等,求那个元素?相关面试题,主要包含被问及一个数组,除一个元素外其它都是两两相等,求那个元素?时的应答技巧和注意事项,需要的朋友参考一下 考察点:数组
问题内容: 我想创建一个包含ArrayList 元素的数组。 我试过了 但这似乎不起作用。 问题答案: 您不能创建通用类型的数组。 相反,您可以创建一个。
创建一组元素,根据原始数组中的位置进行分组。 使用 Math.max.apply() 获取参数中最长的数组。 创建一个长度为返回值的数组,并使用 Array.from() 和 map-function 来创建一个分组元素数组。 如果参数数组的长度不同,则在未找到值的情况下使用 undefined 。 const zip = (...arrays) => { const maxLength =
问题内容: 给定一个数组: 并给出其索引: 如何将它们整齐地堆叠在一起以形成新的2D阵列?这就是我想要的: 这是我目前的解决方案: 它可以工作,但是执行此操作是否更短/更优雅? 问题答案: 在随后的步骤中使用然后分配索引和数组值- 请注意,我们避免使用,这可能会减慢速度。 样品运行- 性能 注意: 时间包括转换到数据帧,这是该解决方案的最终用例。
问题内容: 我有两个一维数组x和y,一个比另一个小。我试图找到x中y的每个元素的索引。 我发现有两种简单的方法可以做到这一点,第一种很慢,第二种需要占用大量内存。 记忆猪 是否有更快的方法或更少的内存密集型方法?理想情况下,搜索将利用以下事实:我们不是在列表中搜索一件事,而是在搜索许多东西,因此稍微适合并行化。如果您不假设y的每个元素实际上都在x中,则可获得加分。 问题答案: 正如Joe King