检查集合中的值是否在 python 中的 numpy 数组中

2023-11-26

我想检查 NumPy 数组中是否包含集合中的值,如果是,则在数组中设置该区域 = 1。如果没有,则设置 keepRaster = 2。

numpyArray = #some imported array
repeatSet= ([3, 5, 6, 8])

confusedRaster = numpyArray[numpy.where(numpyArray in repeatSet)]= 1

Yields:

<type 'exceptions.TypeError'>: unhashable type: 'numpy.ndarray'

有没有办法循环它?

 for numpyArray
      if numpyArray in repeatSet
           confusedRaster = 1
      else
           keepRaster = 2

为了澄清并寻求进一步的帮助:

我正在尝试并正在做的是将光栅输入放入数组中。我需要读取二维数组中的值并根据这些值创建另一个数组。如果数组值在集合中,则该值将为 1。如果它不在集合中,则该值将从另一个输入派生,但现在我会说 77。这就是我目前正在使用的。我的测试输入大约有 1500 行和 3500 列。它总是冻结在第 350 行左右。

for rowd in range(0, width):
    for cold in range (0, height):
        if numpyarray.item(rowd,cold) in repeatSet:
            confusedArray[rowd][cold] = 1
        else:
            if numpyarray.item(rowd,cold) == 0:
                confusedArray[rowd][cold] = 0
            else:
                confusedArray[rowd][cold] = 2

在 1.4 及更高版本中,numpy 提供了in1d功能。

>>> test = np.array([0, 1, 2, 5, 0])
>>> states = [0, 2]
>>> np.in1d(test, states)
array([ True, False,  True, False,  True], dtype=bool)

您可以将其用作分配的掩码。

>>> test[np.in1d(test, states)] = 1
>>> test
array([1, 1, 1, 5, 1])

以下是 numpy 索引和赋值语法的一些更复杂的用法,我认为它们适用于您的问题。注意使用按位运算符来替换if基于逻辑:

>>> numpy_array = numpy.arange(9).reshape((3, 3))
>>> confused_array = numpy.arange(9).reshape((3, 3)) % 2
>>> mask = numpy.in1d(numpy_array, repeat_set).reshape(numpy_array.shape)
>>> mask
array([[False, False, False],
       [ True, False,  True],
       [ True, False,  True]], dtype=bool)
>>> ~mask
array([[ True,  True,  True],
       [False,  True, False],
       [False,  True, False]], dtype=bool)
>>> numpy_array == 0
array([[ True, False, False],
       [False, False, False],
       [False, False, False]], dtype=bool)
>>> numpy_array != 0
array([[False,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True]], dtype=bool)
>>> confused_array[mask] = 1
>>> confused_array[~mask & (numpy_array == 0)] = 0
>>> confused_array[~mask & (numpy_array != 0)] = 2
>>> confused_array
array([[0, 2, 2],
       [1, 2, 1],
       [1, 2, 1]])

另一种方法是使用numpy.where,它使用第二个参数中的值创建一个全新的数组,其中mask为 true,并且来自第三个参数的值,其中mask是假的。 (与赋值一样,参数可以是标量或形状与mask.) 这可能比上面的更有效,而且肯定更简洁:

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

检查集合中的值是否在 python 中的 numpy 数组中 的相关文章

随机推荐

  • Microsoft 语音识别 - 我需要添加什么参考资料?

    我正在尝试制作一个使用 Microsoft 语音识别 API 带有 Kinect 的 C 程序 但我很难开始 我有 using 语句 using Microsoft Speech AudioFormat using Microsoft Sp
  • 恢复时重新加载 PreferenceActivity 中的首选项

    在我的应用程序中 某些设置可能会在PreferenceActivity没有开放 我遇到的一个问题是addPreferencesFromResource被叫进onCreate 所以说 我打开PreferenceActivity 然后从那里转到
  • jQuery datepicker 只工作一次,第二次不显示

    ASP NET MVC3 jQuery 1 9 1 jQuery UI 1 10 2 我有一个页面 单击后会打开一个模式对话框Ajax ActionLink 在这个对话框中我有一个输入字段和一个datepicker与之相关 当我第一次打开对
  • 更改由鼻子测试生成器创建的测试的名称

    鼻子有一个bug 生成器创建的测试名称不会被缓存 因此错误看起来像是在上次测试中发生的 而不是在失败的实际测试中发生的 我按照以下方法解决了这个问题solution在错误报告讨论中 但它仅适用于 stdout 上显示的名称 不适用于 XML
  • 如何更新 firestore 中数组内的对象?

    我想更新completedFirestore 中数组中对象的属性 但我不知道如何访问数组中的特定元素 图像将显示结构 我已经走到这一步了 但不知道如何选择 例如数组中的第 1 项 我正在考虑使用它的 ID 它有一个 id 属性 但不知道如何
  • 升级到Spring Boot 2后,如何向prometheus公开缓存指标?

    我最近将 Spring Boot 应用程序从 1 5 升级到 2 0 1 我还使用千分尺将普罗米修斯集成迁移到新的执行器方法 现在大多数功能都可以工作 包括一些自定义计数器和仪表 我注意到新的普罗米修斯端点 actuator prometh
  • iOS 应用促销代码到期条件

    据我了解 促销代码在生成后 4 周后过期 每个上传的版本还会为您提供 50 个代码 But 如果您生成促销代码 例如 会发生什么 对于应用程序版本 1 0 然后上传新的二进制文件 版本 例如应用程序版本 1 1 到 iTunesConnec
  • 命令提示符不能一个字母一个字母地写? [复制]

    这个问题在这里已经有答案了 import time def textinput txt waittime 0 04 end len txt letters 0 while end letters print txt letters end
  • 自定义运算符来简化 If-Let

    我想简化经常需要做的事情 if let firstName firstName self name firstName 执行此操作的可能的自定义通用运算符是 infix operator func
  • JSPDF 自定义字体添加不起作用

    CSS Code font face font family Calibri src url fonts calibri ttf font style normal JS Code doc setFont Calibri doc setFo
  • 标签内容上的 WPF StringFormat

    我想将我的字符串绑定格式设置为Amount is X where X是绑定到标签的属性 我见过很多例子 但以下不起作用
  • 霍夫变换 - javascript - node.js

    所以 我正在尝试实现霍夫变换 这个版本是基于次要属性的一维 其所有暗淡减少到 1 暗淡优化 版本 随附的是我的代码 带有示例图像 输入和输出 明显的问题是我做错了什么 我已经三次检查我的逻辑和代码 我的参数看起来也很好 但显然我错过了一些东
  • 在 BigQuery 中将 API 调用作为 UDF 的一部分 - 可能吗?

    我想知道是否可以在 BigQuery 中的 UDF 内对 google 地图地理编码 api 进行 api 调用 我有 Google Analytics 地理字段 例如 geoNetwork continent Europe geoNetw
  • react-create-app/react-scripts 如何找到入口点?

    In this tutorial 如何npm start找出src index js给渲染加注星标 我在任何地方都找不到这个配置 你可以跑npm run eject这样项目就变回正常的webpack项目了 然后你就可以找到配置了
  • 使用 Netbeans 指定调试源

    使用 Netbeans 6 1 中的调试器 我想单步执行 JSF 库的方法 特别是 StateManager 类的 saveSerializedView 方法 但我不知道如何通过 IDE 指定 JSF 库源代码的位置 我什至无法确定 Net
  • 当应用程序在后台运行时,Firebase onMessageReceived 不会被调用

    我正在使用 Firebase 并测试在应用程序处于后台时从我的服务器向我的应用程序发送通知 通知发送成功 它甚至出现在设备的通知中心上 但是当通知出现时 或者即使我单击它 我的 FCMessagingService 中的 onMessage
  • 如何检测文本区域中何时自动换行?

    当在文本区域中键入文本并且文本变得比该区域宽时 文本将换行到下一行 有没有一种方法可以以编程方式确定何时发生这种情况 发生换行时不会触发实际事件 但如果您知道文本区域的宽度 则可以破解解决方案 侦听文本区域上的更改事件并将文本传输到换行到其
  • 如何使用 Spark Structured Streaming 持续监控目录

    我希望 Spark 能够持续监控目录并使用以下命令读取 CSV 文件spark readStream文件出现在该目录中后 请不要包含 Spark Streaming 的解决方案 我正在寻找一种使用 Spark 结构化流来实现这一点的方法 以
  • ORDER BY 与 Case 语句 DESC

    How to ORDER BY with a CASE Statement 第一组 日期列中的空值Col1按日期列排序Col2 DESC 第二组 日期列中的非空值Col1排序Col1 DESC 我尝试过以下操作 SELECT columns
  • 检查集合中的值是否在 python 中的 numpy 数组中

    我想检查 NumPy 数组中是否包含集合中的值 如果是 则在数组中设置该区域 1 如果没有 则设置 keepRaster 2 numpyArray some imported array repeatSet 3 5 6 8 confused