当前位置: 首页 > 面试题库 >

如何正确掩盖一个numpy的二维数组?

孟安民
2023-03-14
问题内容

假设我有一个二维坐标数组,看起来像

x = array([[1,2],[2,3],[3,4]])

到目前为止,在以前的工作中,我生成了一个面具,最终看起来像

mask = [False,False,True]

当我尝试在2D坐标矢量上使用此蒙版时,出现错误

newX = np.ma.compressed(np.ma.masked_array(x,mask))

>>>numpy.ma.core.MaskError: Mask and data not compatible: data size 
   is 6, mask size is 3.`

我想这很有道理。所以我尝试简单地使用以下掩码代替:

mask2 = np.column_stack((mask,mask))
newX = np.ma.compressed(np.ma.masked_array(x,mask2))

我得到的是接近:

>>>array([1,2,2,3])

达到我的期望(和想要):

>>>array([[1,2],[2,3]])

必须有一个更简单的方法来做到这一点?


问题答案:

这是你想要的?

import numpy as np
x[~np.array(mask)]
# array([[1, 2],
#        [2, 3]])

或者从numpy masked
array

newX = np.ma.array(x, mask = np.column_stack((mask, mask)))
newX

# masked_array(data =
#  [[1 2]
#  [2 3]
#  [-- --]],
#              mask =
#  [[False False]
#  [False False]
#  [ True  True]],
#        fill_value = 999999)


 类似资料:
  • 问题内容: 例如我有2个数组 我怎么能 和这样我得到 ? 问题答案: 您可以使用dstack: 如果必须有元组: 对于Python 3+,您需要扩展iterator对象。请注意,这是非常低效的:

  • 问题内容: 如果我们有一个numpy数组,例如: 我们想要设置一个元素,另一个元素 我们该怎么做? 将数组的第一个维度的每个元素设置为5 问题答案: 使用as作为数据数组和索引数组,以便每一行对应于要在数据数组中设置的一个元素,您可以执行以下操作- 样品运行- 或者,我们可以使用计算线性索引,然后使用进行赋值,就像这样- 如果您要处理三维数组,我们可以对三维索引进行切片,然后分配具有另一种方法,如

  • 问题内容: 我想通过指定2D数组中的列数将一维数组转换为二维数组。可能会像这样工作: numpy是否具有与我的虚构函数“ vec2matrix”相似的功能?(我知道您可以像2D数组一样索引1D数组,但这不是我拥有的代码中的选项- 我需要进行此转换。) 问题答案: 您要阵列。 其中,根据输入数组的大小推断新维的大小。

  • 问题内容: 如何从字符串读取numpy数组?采取类似的字符串: 并将其转换为数组: 在哪里成为对象: 更新 : 我正在寻找一个非常简单的界面。一种将2D数组(浮点数)转换为字符串,然后将其读回以重建数组的方法: 应该回来 应该返回对象 理想的情况是,如果有一个用来控制将浮点精度转换为字符串的精度参数,那么您就不会得到像这样的条目。 在numpy的文档中我找不到任何可以同时完成这两种操作的文档。可让

  • 我刚接触Python。当我试图将一个2维数组插入到一个3D数组中时,我得到了这样一个错误: 下面是我的代码: 目的是创建一个队列,其中的表[0]总是最新的元素(一个2D数组),而最旧的元素将弹出。 谁知道我怎么解决这个?多谢!

  • 问题内容: 如何使用PyTables将numpy多维数组放入HDF5文件中? 据我所知,我不能将数组字段放在pytables表中。 我还需要存储有关此数组的一些信息,并能够对其进行数学计算。 有什么建议? 问题答案: 可能有一种更简单的方法,但是据我所知,这就是您要做的事情: 如果要指定要使用的压缩,请查看。例如 可能有很多更简单的方法……很长一段时间以来,我除了表型数据外没有用过其他任何东西。