过滤二维数组并从中间返回坐标

2024-01-08

我有一个由零组成的二维数组,在 (1,6) 和 (2,7) 处有一些正整数:

[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 2. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 2. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]

我想通过自定义内核过滤数组:

[[1 0 1]
 [0 1 0]
 [0 1 0]]

我想用这个内核过滤数组,当这个内核中的 2 或 3 个乘以正整数时,我希望它返回乘以 0 的坐标。

我从图像分析中知道,通过内核对二维数组进行卷积很容易,但它不会产生中间结果。在上面的二维数组上,它将返回 (1,8) 和 (3,7)。

我可以使用一些包函数来使这个过程变得简单和容易,还是我必须自己实现它? 一如既往,感谢所有帮助


这是它的一个 numpy 实现。您可以通过修改它来提高性能。

Here, num_ones是您想要过滤的内核中的下限和上限数量,请参阅当该内核中的 2 或 3 个乘以正整数时

a = np.array([[0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.],
 [0.,0.,0.,0.,0.,0.,2.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.],
 [0.,0.,0.,0.,0.,0.,0.,2.,0.,0.,0.,0.,0.,0.,0.,0.,0.],
 [0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.]])

kernel = np.array([[1.,0.,1.],\
 [0.,1.,0.],\
 [0.,1.,0.]])

sub_shape = kernel.shape
#throshold of number of kernel ones to have non-zero value
num_ones = [2,3]

#divide the matrix into sub_matrices of kernel size
view_shape = tuple(np.subtract(a.shape, sub_shape) + 1) + sub_shape
strides = a.strides + a.strides
sub_matrices = np.lib.stride_tricks.as_strided(a,view_shape,strides)
#convert non_zero elements to 1 (dummy representation)
sub_matrices[sub_matrices>0.] = 1.

#Do convolution
m = np.einsum('ij,klij->kl',kernel,sub_matrices)

#find sub_matrices that satisfy non-zero elements' condition
filt = np.argwhere(np.logical_and(m>=num_ones[0], m<=num_ones[1]))
#for each sub_matix find the zero elements located in non-zero elements of kernel
output = []
for [i,j] in filt:
  output.append(np.argwhere((sub_matrices[i,j,:,:]==0)*kernel) + [i, j])

输出是索引数组的数组,其中每个数组都是索引,其中每个位置的每个内核应用程序都满足您的条件[i,j]你的形象。如果您希望将它们全部聚合,您可以堆叠所有数组并获取其唯一列表。我不确定在多次出现的情况下您希望输出如何。

输出:

output =
[[1 8]
 [3 7]] 

更新:关于 einsum:

我会推荐这篇关于 einsum 的文章来学习:理解 NumPy 的 einsum https://stackoverflow.com/questions/26089893/understanding-numpys-einsum

sub_matrices是一个4维数组。sub_matrices[k,l,:,:]是子矩阵a从位置开始[k,l]和内核的形状。 (后来出于我们的目的,我们将其所有非零值更改为 1)

m = np.einsum('ij,klij->kl',kernel,sub_matrices)二维相乘i and j of kernel进入最后两个维度i and j of sub_matrices数组(换句话说,它按元素将内核乘以子矩阵sub_matrices[k,l,:,:]) 并将所有元素求和为m[k,l]。这称为 2D 卷积kernel into a.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

过滤二维数组并从中间返回坐标 的相关文章

  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 谷歌地图 V2“不幸的是应用程序已停止”

    I just begin to learn Android take 4 days to try work maps view but not work that error Unfortunately the app has stoppe
  • 如何使用X509证书和C#进行非对称加密?

    我希望使用公钥和私钥使用 X509 证书加密文件 并将它们发送到远程服务器 我该怎么做 这可能吗 如何生成证书以及公钥和私钥对 See 这个问题 https stackoverflow com questions 1623189 rsacr
  • 在 Python 中使用列表理解查找最小/最大日期

    所以我有这个清单 snapshots 2014 04 05 2014 04 06 2014 04 07 2014 04 08 2014 04 09 我想使用列表理解找到最早的日期 这就是我现在所拥有的 earliest date snaps
  • Apache - 限制 IP 不起作用

    我有一个子域 我只想在内部访问 我试图通过编辑该域的 VirtualHost 块来在 Apache 中实现此目的 有人能看出我哪里出错了吗 注意 我这里的内部IP地址是192 168 10 xxx 我的代码如下
  • 在 PyQt 应用程序上使用 cx_freeze 时出现语法错误

    当尝试使用 PyQt4 从 Python 3 脚本构建 exe 文件时 这是一个非常烦人的问题 我认为这与使用有关uic动态加载模块 ui files cx freeze返回 File E Python32 32 lib site pack
  • 使用 array_multisort() 对多维 PHP 数组进行不区分大小写的排序

    经过大量搜索后 我无法找到有关如何使用 array multisort 按一个字段不区分大小写地对多维数组进行排序的良好解释 我发现在处理数据库查询信息时这是一个非常有用的功能 因此我想分享一下 我应该注意这仅适用于 php 5 4 Exa
  • ANDROID:不同尺寸的ImageView

    我是 android studio 的新手 因此 如果问题很琐碎 请原谅 我的问题是理解布局 我的布局和相应的值文件夹如下所示 我的问题是没有选择正确的布局 例如 对于 Nexus 4 4 7 英寸 768x1280 xhdpi 在横向模式
  • R Shiny:删除 ggplot2 背景以使其透明

    我想让 R Shiny Server 上的 ggplots 透明 我的绘图 ui R 如下 plotOutput malPie width 95 在 server R 中我的绘图函数如下 c lt ggplot dataFrame aes
  • 在pentaho中休息客户端

    我对 pentaho 数据集成工具非常陌生 我想从我的 pentaho 中使用一个安静的服务 post web 服务 为此 我发现我应该使用休息客户端 但是当我给出网址和正文 因为我想使用后期服务 时 它并没有在数据库中进行必要的更改 谁能
  • Moment.js 包含日期格式中间的文本

    我的格式为 2015 年 1 月 27 日上午 8 17 我需要使用 moment js 显示它 我正在使用格式 moment format MMM D YYYY at h mm A z 除了 at 这个词之外 一切都很好 我怎样才能让这个
  • 在oracle中创建密码字段

    安全外部密码存储 有什么用 我可以使用 安全外部密码存储 在 Oracle 表中创建密码字段吗 或者如何在不使用 安全外部密码存储 的情况下在 Oracle 表中创建密码字段 一种不使用 安全外部密码存储 无论是什么 的方法是将 RAW 1
  • 休眠级联持续

    我有一个关于 Hibernate 的一般性问题正在解决 我有 A 类和 B 类 其中 B 依赖于 A 在我的代码中 当我调用 em persist objOfTypeA 时 我希望插入并插入到表 AAA 和 BBB 中 如果我手动保留 A
  • Powershell:递归移动文件

    我正在尝试将所有构建输出文件和文件夹复制到Bin文件夹 输出目录 Bin 除了一些保留在输出目录 The Bin文件夹永远不会被删除 初始条件 Output config log4net file1 txt file2 txt file3
  • 删除 R 图形设备中的所有边距

    所以我在摆脱图形设备的整个边距时遇到了一些麻烦 我已将 mar 设置为 0 但边缘周围仍然存在一些持久空间 例如 plot new par mar c 0 0 0 0 plot window c 0 1 c 0 1 points c 1 1
  • 如何使用 foreachPartition 在 Spark 中为每个分区高效构建一个 ML 模型?

    我正在尝试为数据集的每个分区拟合一个 ML 模型 但我不知道如何在 Spark 中执行此操作 我的数据集基本上是这样的按公司划分 Company Features Target A xxx 0 9 A xxx 0 8 A xxx 1 0 B
  • C2DM实现PHP代码

    我正在创建使用 C2DM 推送通知的 Android 应用程序 但我在创建 php 代码以使用 c2dm 发送消息时遇到问题 请指导我如何使用 php 代码发送消息 实际上存在一个问题 即如何获取客户端身份验证令牌 我见过http code
  • ASP.NET MVC:如何设置 web.config 进行 LDAP 身份验证?

    我有一个正在运行的 LDAP 服务器 其参数如下 OU users OU mydomain O this domain LDAP myhost 389 I 成功地 access 使用通用 LDAP 客户端 就像 Jarek Gawor 的
  • 在 LINQ 中实现“不在”(又名“不存在”)逻辑

    Setup 我有两个List
  • Objective C 的 iPhone 开发中的“委托”是什么? [复制]

    这个问题在这里已经有答案了 Objective C 的 iPhone 开发中的 委托 是什么 委托是一个指向对象的指针 该对象具有委托持有者知道如何调用的一组方法 换句话说 就是启用特定回调的机制来自后来创建的对象 A 很好的例子是UIAl
  • 过滤二维数组并从中间返回坐标

    我有一个由零组成的二维数组 在 1 6 和 2 7 处有一些正整数 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0