有效的通用代码将Numpy中的2D或1D蒙版数组索引为1D数组

ztl

我想为2D或1D蒙版数组提供有效的代码以从中提取1D数组。在2D情况下,一列将完全被遮盖,应将其删除(例如,可以按照此问题所示进行操作)。

import numpy as np

a = np.ma.masked_array(range(10*2), mask=[True, False]*10).reshape(10,2)
a = np.ma.masked_equal(a, 13)
b = np.ma.masked_equal(np.array(range(10)), 3)

print(a)
print(b)
# [[-- 1]
#  [-- 3]
#  [-- 5]
#  [-- 7]
#  [-- 9]
#  [-- 11]
#  [-- --]
#  [-- 15]
#  [-- 17]
#  [-- 19]]
# [0 1 2 -- 4 5 6 7 8 9]

# HERE I would like the same indexing valid for both (2D and 1D) situations:
a = a[:, ~np.all(a.mask, axis=0)].squeeze()
b = b[:] # I am not supposed to know that b is actually 1D and not a problematic 2D array

print(a)
print(b)
# [1 3 5 7 9 11 -- 15 17 19]
# [0 1 2 -- 4 5 6 7 8 9]
print(a-b)
# [1 2 3 -- 5 6 -- 8 9 10]

实现此目的的有效pythonic代码是什么?

子问题:令我惊讶的是,在我尝试期间,以下各项确实奏效:

b = b[:, ~np.all(b.mask, axis=0)].squeeze()
print(b)
# [1 3 5 7 9 11 -- 15 17 19]

IndexError: too many indices for array在此1D数组使用2D索引时,为什么没有出现错误?

有什么更好的选择来解决原始问题?谢谢!

斯蒂夫

a = a[:, ~np.all(a.mask, axis=0)].squeeze()两种情况(一维和二维)都可以使用

在你的榜样的1D情况下,你b[:, ~np.all(b.mask, axis=0)]这是b[:, True]看来这应该引发索引错误,但在这种情况下的True行为类似np.newaxis,即的结果b[:, True]是shape的数组(10,1)请参阅此SO答案,以了解其原因以及其背后的动机是什么(答案与0维情况有关,但事实证明,它适用于较大的尺寸)。squeeze然后删除此额外的维度,以便您不会注意到它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将 2d 数组索引为 1d

来自分类Dev

将3D numpy数组有效转换为1D numpy数组

来自分类Dev

将3D numpy数组有效转换为1D numpy数组

来自分类Dev

为1D numpy数组创建成对2D数组的更有效方法是什么?

来自分类Dev

C ++-1D中的动态数组有效,而2D中的动态数组无效

来自分类Dev

numpy:将索引的2D数组转换为1D数组以进行交集计算

来自分类Dev

为什么将数组显示为1D而不是2D,但该表仍然有效?

来自分类Dev

在1d数组中填充2d数组

来自分类Dev

Python Numpy在带有2D数组的1D数组上相交1d

来自分类Dev

使用1d张量将Tensorflow索引为2d张量

来自分类Dev

使用1d张量将Tensorflow索引为2d张量

来自分类Dev

用1D numpy数组制作2D

来自分类Dev

有效地将3D numpy数组重塑为1D列表加坐标矢量

来自分类Dev

如何将numpy中的1D数组视为(1 x n)2D数组?

来自分类Dev

我应该如何用numpy将3d数组中的1d数组乘以2d矩阵

来自分类Dev

tf.gather_nd从1d索引数组中获取2d数组的值

来自分类Dev

使用2D数组中的值索引1D数组

来自分类Dev

tf.gather_nd从1d索引数组中获取2d数组的值

来自分类Dev

将2D平面有效投影到1D线上

来自分类Dev

numpy:将2D数组乘以1D数组

来自分类Dev

numpy将2D数组与1D数组连接

来自分类Dev

从1D重塑为2D numpy数组后,如何返回元素的位置(索引)?

来自分类Dev

从2D NumPy数组中查找1D数组?

来自分类Dev

带有1列的Numpy重塑1d至2d数组

来自分类Dev

从C中现有的1D数组创建2D数组?

来自分类Dev

Numpy计算随机2D或1D数组中的Min Max

来自分类Dev

C ++ 2D数组到1D数组

来自分类Dev

numpy中用于1d到3d索引对应的有效算法

来自分类Dev

从numpy 1D数组列表创建numpy 2D数组

Related 相关文章

热门标签

归档