当前位置: 首页 > 面试题库 >

通过最近的邻居切片对numpy数组进行升采样的快速方法

龙洛城
2023-03-14
问题内容

我有一个2D整数数组 MxN ,我想将该数组扩展为 (BM)x(BN) ,其中 B 是一个正方形瓦片边的长度,因此输入数组的每个元素都作为
BxB 块重复在最后的数组中。下面是带有嵌套的for循环的示例。有更快/内置的方法吗?

import numpy as np

a = np.arange(9).reshape([3,3])            # input array - 3x3
B=2.                                       # block size - 2  
A = np.zeros([a.shape[0]*B,a.shape[1]*B])  # output array - 6x6

# Loop, filling A with tiled values of a at each index
for i,l in enumerate(a):                   # lines in a
    for j,aij in enumerate(l):             # a[i,j]
        A[B*i:B*(i+1),B*j:B*(j+1)] = aij

结果…

a=      [[0 1 2]
         [3 4 5]
         [6 7 8]]

A =     [[ 0.  0.  1.  1.  2.  2.]
         [ 0.  0.  1.  1.  2.  2.]
         [ 3.  3.  4.  4.  5.  5.]
         [ 3.  3.  4.  4.  5.  5.]
         [ 6.  6.  7.  7.  8.  8.]
         [ 6.  6.  7.  7.  8.  8.]]

问题答案:

一种选择是

>>> a.repeat(2, axis=0).repeat(2, axis=1)
array([[0, 0, 1, 1, 2, 2],
       [0, 0, 1, 1, 2, 2],
       [3, 3, 4, 4, 5, 5],
       [3, 3, 4, 4, 5, 5],
       [6, 6, 7, 7, 8, 8],
       [6, 6, 7, 7, 8, 8]])

由于中间数组,这有点浪费,但至少是简洁的。



 类似资料:
  • 本文向大家介绍是否可以通过HTML5中的“最近邻居”重采样来调整图像大小?,包括了是否可以通过HTML5中的“最近邻居”重采样来调整图像大小?的使用技巧和注意事项,需要的朋友参考一下 是的,有可能。使用以下内容- 示例 您需要创建屏幕外的画布,然后绘制图像。之后,只需获取像素即可。

  • 问题内容: 该问题旨在作为规范的重复目标 给定两个阵列和形状和代表的名单维坐标, 找到最快的方法是: 每个点和每个点之间的形状距离 每个点中所有点的最近邻居的索引和距离 这些指数,以及距离在每一个点的中距离每一点的在 鉴于以下几组限制: 仅使用 使用任何包装 包括特殊情况: 是 在所有情况下,距离主要是指欧几里得距离,但是请随意强调允许其他距离计算的方法。 问题答案: 仅使用 天真的方法是: 但是

  • 问题内容: 要求: 我需要从数据中任意增加一个数组。 我可以猜测大小(大约100-200),但不能保证每次都适合该数组 一旦增长到最终大小,我就需要对其进行数值计算,因此我更希望最终使用二维numpy数组。 速度至关重要。例如,对于300个文件之一,update()方法被称为4500万次(大约需要150秒),而finalize()方法被称为500k次(总共需要106s)……总共需要250s或者。

  • 我正在尝试使用jgraph T解决一个链接预测问题。我正在根据两个节点的邻居计算两个节点之间的相似性。每个节点都有一些属性。计算变得太多了,因为一些节点有大约700个邻居,而我有4500个这样的节点。我有谁对的700K边,我计算相似性。 现在,我不想使用节点的所有邻居,我只想使用每个节点的k个最近邻居来计算一对节点之间的相似度。我可以根据边共享的两个节点的属性数,或节点之间长度为n的最短路径数等,

  • 本文向大家介绍Python对数据进行插值和下采样的方法,包括了Python对数据进行插值和下采样的方法的使用技巧和注意事项,需要的朋友参考一下 使用Python进行插值非常方便,可以直接使用scipy中的interpolate 其中y_bspline就是从1024插值得到的4096的数据 但是,scipy中好像并没有进行下采样的函数,嗯..难道是因为太过简单了么,不过好像用一个循环就可以完成,但如

  • 问题内容: 我知道我可以像下面这样: 但是,由于它做了完整的排序,所以它非常慢。 我想知道numpy是否提供一些可以快速完成的方法。 问题答案: 该模块具有一种快速的局部排序方法,可直接与Numpy数组配合使用:。 请注意,返回的是已排序的实际值,如果要使用已排序的值的索引(返回值),则应使用。 我已经进行了基准测试: 其中是一个随机的1,000,000个元素的数组。 时间安排如下: :每个循环2