【问题标题】:Obtaining a 2D index from a 3D array?从 3D 数组中获取 2D 索引?
【发布时间】:2019-11-13 21:51:53
【问题描述】:

我有一个 (7 x 325 x 255) 的 numpy 数组。这七个是图像中的不同波段,而 325 和 448 是行和列(即像素)。 X 是我的设置示例。

     x = x = np.random.randint(5, size=(7,325,255))

我正在尝试使用 np.where() 从所有 7 个波段创建一个二维索引 (325,255),其中的值等于我的无数据参数,即 -9999。我的论点如下:

    y = np.asarray(np.where(x == -9999))

但是,当我打印 y 的形状时,我得到以下内容,应该是 (325, 255):

    (3, 580125)

关于如何解决这个问题有什么建议或想法吗? 非常感谢!

【问题讨论】:

  • 您想获得 all 波段等于特殊值或 any 的索引吗?
  • 不完全确定我是否在关注这个问题......所以你有一个 (length=7, width=325, height=255) 的 3d 数组 x,其中包含一堆值,一个其中是 x(l,w,h) = -9999。并且您想生成一些可以在 2d 数组中表示的 'y' 数组,该数组继承了 3d 数组的宽度和高度。您究竟希望用什么来填充 y 数组?它应该保存哪些信息?
  • @Matthias 可能是任何,抱歉应该澄清一下。
  • @MichaelGreen 最终产品是一个索引,显示我在任何波段的值为 -9999。
  • @fotxoa 所以如果我理解正确,你想要一个布尔二维数组,如果出现任何 -9999 则为真?

标签: python arrays numpy indexing


【解决方案1】:

使用any 聚合各个频段。这会产生所需的二维布尔数组:

y = np.any(x == -9999, axis=0)

【讨论】:

    猜你喜欢
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 2018-11-13
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多