当前位置: 首页 > 知识库问答 >
问题:

二维索引和求和的numpy数组

陈正业
2023-03-14

我有一个疑问。有没有一种有效的方法来求一个numpy矩阵的所有邻域的和而不使用几个条件?

这是一个例子:

array([[5, 4, 8, 3, 1, 4, 3, 2, 2, 3],
       [2, 7, 4, 5, 8, 5, 4, 7, 1, 1],
       [5, 2, 6, 4, 5, 5, 6, 1, 7, 3],
       [6, 1, 4, 1, 3, 3, 6, 1, 4, 6],
       [6, 3, 5, 7, 3, 8, 5, 4, 7, 8],
       [4, 1, 6, 7, 5, 2, 4, 6, 4, 5],
       [2, 1, 7, 6, 8, 4, 1, 7, 2, 1],
       [6, 8, 8, 2, 8, 8, 1, 1, 3, 4],
       [4, 8, 4, 6, 8, 4, 8, 5, 5, 4],
       [5, 2, 8, 3, 7, 5, 1, 5, 2, 6]])

当我运行m[0][1]时,它返回我3,而不是一个错误,因此如果我想将1添加到一个值的所有邻居中,我需要使用很多条件,因为我不能只使用m[0][1],因为在这种情况下以及在其他情况下,它只返回我一个“假邻居”

共有1个答案

伯建安
2023-03-14

IIUC,您希望向具有给定值的单元格的每个邻居添加1。

例如,让我们在7附近的每个单元格中添加1:

from scipy.signal import convolve2d
v = np.array([[1,1,1],[1,0,1],[1,1,1]])
a + convolve2d(a==7, v, mode='same')

输出:

array([[6, 5, 9, 3, 1, 4, 4, 3, 3, 3],
       [3, 7, 5, 5, 8, 5, 5, 8, 3, 2],
       [6, 3, 7, 4, 5, 5, 7, 3, 8, 4],
       [6, 1, 5, 2, 4, 3, 6, 3, 6, 8],
       [6, 3, 7, 8, 5, 8, 5, 5, 7, 9],
       [4, 2, 9, 9, 7, 2, 5, 8, 6, 6],
       [2, 2, 8, 8, 9, 4, 2, 7, 3, 1],
       [6, 9, 9, 3, 8, 8, 2, 2, 4, 4],
       [4, 8, 4, 7, 9, 5, 8, 5, 5, 4],
       [5, 2, 8, 4, 7, 6, 1, 5, 2, 6]])
 类似资料:
  • 问题内容: 假设我有2个矩阵M和N(都具有> 1列)。我也有一个包含2列的索引矩阵I- M代表1列,N代表1列。N的索引是唯一的,但是M的索引可能会出现多次。我要执行的操作是 除了for循环以外,还有其他更有效的方法吗? 问题答案: 为了完整起见,在numpy> = 1.8中,您还可以使用的方法: 除了明显的性能劣势外,它还有两个优点: 将其权重转换为双精度浮点数,将与数组的本机类型一起使用。这使

  • 主要内容:基本切片,多维数组切片在 NumPy 中,如果想要访问,或修改数组中的元素,您可以采用索引或切片的方式,比如使用从 0 开始的索引依次访问数组中的元素,这与 Python 的 list 列表是相同的。 NumPy 提供了多种类型的索引方式,常用方式有两种:基本切片与高级索引。本节重点讲解基本切片。 基本切片 NumPy 内置函数 slice() 可以用来构造切片对象,该函数需要传递三个参数值分别是 start(起始索引

  • 本文向大家介绍Python numpy实现二维数组和一维数组拼接的方法,包括了Python numpy实现二维数组和一维数组拼接的方法的使用技巧和注意事项,需要的朋友参考一下 撰写时间:2017.5.23 一维数组 1.numpy初始化一维数组 输出的值应该为(3,) 二维数组 2.numpy初始化二维数组 注意(3,)和(3,1)的数组是不一样的,前者是一维数组,后者是二维数组。 拼接 3.nu

  • 问题内容: 背景 我有一个零初始化的一维NumPy数组。 然后我有一个Pandas DataFrame,其中两列都有索引: 对于每对索引,我想将numpy数组中相应索引的值设置为True。 我目前的解决方案 我可以通过将一个函数应用于DataFrame来做到这一点: 我想向量化此操作 这可以按我期望的方式工作,但是出于乐趣,我想对操作进行矢量化处理。我对此不是很熟练,而且我在网上搜索并没有使我走上

  • 本文向大家介绍浅析NumPy 切片和索引,包括了浅析NumPy 切片和索引的使用技巧和注意事项,需要的朋友参考一下 ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。 ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新

  • 问题内容: 我有N维向量数组。 我正在使用sklearn的函数来计算距离值矩阵。注意,该矩阵关于对角线对称。 我需要与该矩阵中前N个值相对应的索引,因为这些索引将与成对索引相对应,它们代表了向量之间的最大距离。 我尝试做以获得每一行中最大值的索引,并获取每一列中最大值的索引,但是请注意: 和: 因为矩阵是关于对角线对称的,并且因为argmax返回它找到的具有最大值的第一个索引,所以我最终在行和列匹