- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
给定一个由 1 和 0 组成的二维矩阵,例如-
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 1, 1],
[0, 1, 1, 0, 0, 1, 0, 1, 0, 1],
[1, 1, 0, 0, 1, 1, 0, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 0, 1, 0, 0],
[1, 0, 0, 0, 1, 0, 1, 1, 0, 0],
[1, 0, 0, 0, 1, 0, 1, 1, 1, 0],
[1, 0, 0, 0, 1, 1, 0, 1, 1, 0]])
我希望计算某些统计数据:
1. Number of holes (no. of 0s with at least one 1 above): 12
2. Sum of hole depths (no. of 1s above holes, summed across columns): 0+3+(1+1)+1+0+3+(2+8)+(2+1)+(1+1)+3 = 27
3. Number of rows with at least one hole: 7
我能够通过使用 scipy.ndimage.measurements.label 计算连续的 0 组来完成 1
.
In[2]: scipy.ndimage.measurements.label(arr == 0,
structure=[[0,1,0],
[0,0,0],
[0,1,0]])[1] - arr.shape[1]
Out[2]: 12
我如何找到2
和3
?我想避免使用循环。
最佳答案
这是使用 xor 和 np.where
的一种方法:
# mark all the places where A changes in vertical direction
# pad in such a way that the first change in each column is up and the last down
B = np.empty(np.array([1,0])+A.shape, int)
B[:-1] = A
B[1:-1] ^= A[:-1]
B[-1] = A[-1]
# retrieve coordinates of switch points
x, y = np.where(B.T)
# group in pairs, the differences in y are the hole depths
x = x[::2]
d = np.subtract(*y.reshape(-1, 2).T[::-1])
# exclude holes that were introduced by padding
x, d = x[y[1::2]!=len(A)], d[y[1::2]!=len(A)]
# now we have the column numbers and hole depths
x
# array([1, 2, 2, 3, 5, 6, 6, 7, 7, 8, 8, 9])
d
# array([3, 1, 1, 1, 3, 8, 2, 1, 2, 1, 1, 3])
# the sum of the depths
d.sum()
# 27
# and the rows with holes
unq = np.unique(y[1::2])
# make sure not to count padded holes
unq.size - (unq[-1] == len(A))
# 7
关于python - 在 numpy 2D 矩阵中计算 "holes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55410383/
我最近继承了一个数据库,其中一个表的主键由编码值 (Part1*1000 + Part2) 组成。 我对该列进行了标准化,但无法更改旧值。 所以现在我有 select ID from table or
有没有人有一个使用 Delaunay 填充网格的直接 Delphi 示例三角形还是克里格法?任何一种方法都可以通过“插值”来填充网格。 我想做什么?我有一个网格,类似于: 22 23 xx 17
如果满足条件,我需要从数组中删除一些对象。 从数组中删除对象后,我需要数组没有“空洞”,这意味着我需要缩小数组:不是数组大小,而是减少它包含的对象数量。 删除对象后如果数组末尾有空值也没关系。 哪个效
我有一个像这样的二维数组(它代表一个时间表): alt text http://www.shrani.si/f/28/L6/37YvFye/timetable.png 橙色单元格是讲座,白色单元格是空
我正在创建一个包含 2 层的页面:一个图像层和一个位于其顶部的半透明“ mask ”层。我想在该蒙版中动态放置一个小矩形“孔”,以便可以在该区域看到其下方的原始图像。 这可能吗? 最终目的 a 是创建
我有一个姓名和电话号码列表,如下所示: var phonelist = List { new string[] {"Bill", "1234", "12345", "12314" },
我有星系的照片图像。这些图像上有一些不需要的数据(如星星或飞机条纹)被屏蔽掉了。我不只是想用一些平均值填充屏蔽区域,而是根据周围的数据对它们进行插值。我如何在 python 中做到这一点? 我们尝试了
我正在尝试使用 SVG 路径元素来定义带有“孔”的区域。我想使用这些区域来突出显示图像中的某些文字。 我的目标是展示使用 OCR ( Google Cloud Vision API) 从图像中提取文本
给出下表: create table #Track (id int identity, vehicle int, station varchar(50), pieces int, distance i
假设您有一组日期范围 var arr = [ { "from": 'unix 1st of august', "until": 'unix 5th of august' },
这是我的 code : HTML text under link! CSS .myDiv { position:relative;
我正在研究以下CodeChef question : Chef wrote some text on a piece of paper and now he wants to know how man
识别完全被 1 包围的 0(不需要对角线覆盖)。在下面的示例中,大小应为 3。 二维数组中可能有任意数量的“孔”。 [[1,0,1,1], [1,1,1,1], [1,0,0,1], [1,0,
考虑一个 MxN 位图,其中单元格为 0 或 1。“1”表示填充,“0”表示空。 找出位图中“孔”的数量,其中孔是空白单元格的连续区域。 例如,这有两个洞: 11111 10101 10101
我将如何着手在 Windows 窗体中创建一个动态“孔”,用户可以通过它看到实际的桌面而不是窗体?现在,我已经在整个屏幕的顶部创建了一个半透明窗体,我希望透过该半透明窗体进行查看。 最佳答案 使用表单
我已经阅读了一些关于此的帖子,但没有一篇涉及此问题。 我想这是不可能的,但我还是会问。 我有一个包含 50.000 多个寄存器的表。这是一张旧表,其中发生了各种插入/删除操作。 也就是说,大约 300
首先:我知道,这个问题在这里已经有很多答案了,但是他们并没有帮助我解决这个问题。 我编写了一个小游戏。在第一次发布时有一个小教程,其中一点一点地解释了游戏的每个元素。在每一步中,我都想强调这些元素之一
谁能告诉我为什么我的网格布局中可能会有看似随机的“漏洞”?我正在使用 Zurb Foundation。 尽管这是一个基本的网格布局,但有些列会无缘无故地向右浮动。看起来好像偶尔缺少一篇文章,但如果您查
有没有一种方法可以提取或显示孔洞,同时丢弃外部轮廓? 我可以使用 CV_RETR_EXTERNAL 仅显示外部轮廓,但似乎无法仅显示内部轮廓(孔)。 最佳答案 你可以在 C 接口(interface)
当我删除时,例如,id 3,我有这个: id | name 1 | 2 | 4 | 5 | ... 现在,我想搜索丢失的 ID,因为我想用以下内容再次填充 ID: INSERT INT
我是一名优秀的程序员,十分优秀!