【问题标题】:What is this code all about? It is hard to interpret这段代码是关于什么的?很难解释
【发布时间】:2021-04-03 21:54:36
【问题描述】:
import numpy as np 
  
np.where([[True, False], [True, True]], 
         [[1, 2], [3, 4]], [[5, 6], [7, 8]])

输出:

array([[1, 6],
       [3, 4]])

[真,假],[真,真]是什么意思?

【问题讨论】:

  • 请理解 StackOverflow 旨在帮助您应对编码和技术挑战。这不是你在这里问的那种问题,你需要搜索、研究、尝试。
  • 查看np.where 的文档。然后检查这三个论点。它们看起来像(列表中的)列表。

标签: python numpy


【解决方案1】:

第一个列表(带有布尔值)确定从其他两个列表中的哪一个列表中选择一个值。

所以如果我们垂直对齐值,我们有:

np.where([[True, False], [True, True]], 
         [[   1,     2], [   3,    4]], 
         [[   5,     6], [   7,    8]])

现在当第一个列表有 True 时,相应的值(用于结果)将从第一个数据列表中获取(即来自 [[1, 2], [3, 4]])。如果是False,它将从另一个列表中获取(即来自[[5, 6], [7, 8]])。

让我用星号标记选定的元素:

np.where([[True, False], [True, True]], 
         [[  *1,     2], [  *3,   *4]],  # <-- select when True 
         [[   5,    *6], [   7,    8]])  # <-- select when False

因此结果是:

         [[   1,     6], [   3,    4]]

【讨论】:

    【解决方案2】:

    第一个参数是条件

    [[True, False], [True, True]]
    

    如果真返回X,如果假返回Y。

    第二个参数包含数据(X,Y):

    [1, 2], [3, 4]], [[5, 6], [7, 8]]
    

    否则会暗示X=[1,2], [3,4]Y=[5,6],[7,8]

    迭代:

    • 第一个条件为真,我们得出 X = 1。
    • 第二个条件为 False,我们得出 Y = 6。
    • 第三个条件为真,我们得出 X = 3
    • 第四个条件为真,我们得出 X = 4

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      相关资源
      最近更新 更多