- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我见过这个:Slice 2d array into smaller 2d arrays
但是,我的图像无法均匀地分割成一些 N × N block 。理想情况下,我希望发生以下行为:
>>> import numpy as np
>>> a = np.arange(70*85).reshape([70,85])
>>> arrlist = split_2d(a, [16, 16])
>>> dd = dict()
>>> for arr in arrlist:
... dd[arr.shape] = dd.get(arr.shape, 0) + 1
>>> print(dd)
{(16, 16): 16, (10, 16): 4, (16, 5): 4, (10, 5): 1}
这反射(reflect)了将 (70x85) 数组拆分为以下内容:
(16x16) (16x16) (16x16) (16x16) (10x16)
(16x16) (16x16) (16x16) (16x16) (10x16)
(16x16) (16x16) (16x16) (16x16) (10x16)
(16x16) (16x16) (16x16) (16x16) (10x16)
(16x16) (16x16) (16x16) (16x16) (10x16)
(16x5) (16x5) (16x5) (16x5) (10x5)
返回值可以是二维数组的列表,也可以是二维数组的二维数组。
最佳答案
这将构建您需要的生成器。
from itertools import product
import numpy as np
n, m = 70, 85
a = np.arange(n * m).reshape(n, m)
def igen(a, n, m):
i_ = np.arange(a.shape[0]) // n
j_ = np.arange(a.shape[1]) // m
for i, j in product(np.unique(i_), np.unique(j_)):
yield (i, j), a[i_ == i][:, j_ == j]
dict_of_arrays = dict(igen(a, 16, 16))
<小时/>
另一种选择
使用 np.nan
和 reshape
+ transpose
def cover_multiple(current_length, multiple):
return ((current_length - 1) // multiple + 1) * multiple
def slicer(a, chunk_i, chunk_j, two_d=True):
n = cover_multiple(a.shape[0], chunk_i)
m = cover_multiple(a.shape[1], chunk_j)
c = np.empty((n, m))
c.fill(np.nan)
c[:a.shape[0], :a.shape[1]] = a
c = c.reshape(n // chunk_i, chunk_i, m // chunk_j, chunk_j)
c = c.transpose(0, 2, 1, 3)
if not two_d:
c = c.reshape(-1, chunk_i, chunk_j)
return c
演示
a = np.arange(64).reshape(8, 8)
a
[[ 0 1 2 3 4 5 6 7]
[ 8 9 10 11 12 13 14 15]
[16 17 18 19 20 21 22 23]
[24 25 26 27 28 29 30 31]
[32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47]
[48 49 50 51 52 53 54 55]
[56 57 58 59 60 61 62 63]]
<小时/>
print(slicer(a, 3, 5))
[[[[ 0. 1. 2. 3. 4.]
[ 8. 9. 10. 11. 12.]
[ 16. 17. 18. 19. 20.]]
[[ 5. 6. 7. nan nan]
[ 13. 14. 15. nan nan]
[ 21. 22. 23. nan nan]]]
[[[ 24. 25. 26. 27. 28.]
[ 32. 33. 34. 35. 36.]
[ 40. 41. 42. 43. 44.]]
[[ 29. 30. 31. nan nan]
[ 37. 38. 39. nan nan]
[ 45. 46. 47. nan nan]]]
[[[ 48. 49. 50. 51. 52.]
[ 56. 57. 58. 59. 60.]
[ nan nan nan nan nan]]
[[ 53. 54. 55. nan nan]
[ 61. 62. 63. nan nan]
[ nan nan nan nan nan]]]]
关于python - 如何将二维数组拆分为较小的可变大小的二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41214432/
是否可以告诉hive某个表“很小”,即应将其复制到所有节点并在RAM中进行操作? 最佳答案 尝试以下提示: /*+ MAPJOIN(small_table) */ UPDATE 顺便说一句,还有其他
给定的是一个大(但不是巨大)的字符串数组(数量为 1000-5000 个单个字符串)。我想对这些字符串执行一些计算和其他操作。因为在处理那个大数组时它总是停止工作,所以我重写了我的函数以递归地获取较小
当我在大小为 (640,480) 的 JFrame 中添加 JPanel 时,JPanel 的大小为 (638449)。我需要 JPanel 与 JFrame 完全匹配! 我发现的一个临时解决方法是将
我目前正在尝试响应设计。我需要在父 div 变小的同时保持图像居中。 见图片说明: 我不想用它作为背景。下面的代码会一直把它放在div框的左上角 #img_wrap {
当我必须捕获生成器中可能发生的异常时,如何使 try block 尽可能小? 典型的情况是这样的: for i in g(): process(i) 如果 g() 可以引发我需要捕获的异常,第一种
目前尝试让 Accordion 项目在 Bootstrap 中工作一切都很好,直到我尝试关闭所有 Accordion 菜单。突然之间,标题比未折叠时小得多。 当一个打开时 当全部关闭时 我正在使用指南
目前尝试让 Accordion 项目在 Bootstrap 中工作一切都很好,直到我尝试关闭所有 Accordion 菜单。突然之间,标题比未折叠时小得多。 当一个打开时 当全部关闭时 我正在使用指南
一个应用程序托管一个具有三个接口(interface)的 Web 服务,用于三个单独且独立的操作,所有这些操作都在应用程序的不同组件中实现,彼此独立,例如在不同的包等中,所以他们对彼此了解不多,只共享
我正在尝试使用 border-radius 属性设计一个主要内容容器具有圆 Angular 的网站。但是,我保持侧边栏和顶部导航栏固定,因此当用户向上或向下滚动时它们不会移动。它类似于在 Google
我正在构建我网站的响应式版本。 虽然我很高兴大多数 float 的 div 被迫在屏幕下方,但有一些 div 我需要保持彼此相邻,即使屏幕区域小于这些 div 的总宽度。在这种情况下,我想按比例缩小它
我正在为我的元素使用 Twitter Bootstraps 网格。我有以下 HTML: Some text Some text
我有一个小宽度的 div 并且可以看到溢出。我有一个更大的表,里面只有一个单元格和一个文本: A small text with spaces...
我有一个设计得很好的架构,其中 Controller 转到访问与数据库通信的存储库的服务。 因此, Controller 中的逻辑保持在最低限度,但我仍然有非常微妙的代码片段来执行一些任务,例如 验证
我在一个布局中有两个 View 。我将分别称它们为 View A 和 View B。 ┌──────┐ │┌─┐┌─┐│ ││A││B││ │└─┘└─┘│ └──────┘ 父布局(包括View A
整个页面的父元素是一个居中的 div,最大宽度限制为 960px。页面上的所有其他元素都是该父 div 的子元素。简化结构如下: 虽然父 div 的宽度不应超过 960px,但我
我应该链接到完整的 jQuery UI -还是-提供精简的自定义副本? 来自 Google 等 CDN 的完整 jQuery-UI 与提供定制的最小版本之间存在非常显着的大小差异。此外,还可以将 jQ
我正在尝试制作一条图像拇指的“线”,它在鼠标移动时滚动。我让它工作了,但我现在的问题是我想在侧面做一个“填充”,这样我就不必将鼠标一直拉到侧面才能看到第一个/最后一个拇指。但我真的无法让它工作:/ 这
我是一名优秀的程序员,十分优秀!