【问题标题】:Simple numpy question简单的numpy问题
【发布时间】:2011-02-24 17:07:15
【问题描述】:

我无法让这个 sn-p 工作:

#base code

A = array([ [ 1, 2, 10 ],
            [ 1, 3, 20 ],
            [ 1, 4, 30 ],
            [ 2, 1, 15 ],
            [ 2, 3, 25 ],
            [ 2, 4, 35 ],
            [ 3, 1, 17 ],
            [ 3, 2, 27 ],
            [ 3, 4, 37 ],
            [ 4, 1, 13 ],
            [ 4, 2, 23 ],
            [ 4, 3, 33 ] ])

# Number of zones
zones = unique1d(A[:,0])


for origin in zones:
  for destination in zones:
    if origin != destination:
      A_ik = A[(A[:,0] == origin & A[:,1] == destination), 2]

【问题讨论】:

  • 所有“这行不通”的问题至少应该有 (a) 代码,(b) 预期结果和 (c) 实际结果 - 你错过了 (b ) 和 (c)。心理调试在 IT 领域还不是一个发达的领域 :-)
  • 来自 1k 点以上的用户...我没有看到这个来。

标签: python numpy


【解决方案1】:

我正在练习我的心灵调试...

最后一行缺少括号:

A_ik = A[(A[:,0] == origin) & (A[:,1] == destination), 2]

应该可以。

【讨论】:

    【解决方案2】:

    尝试用&&替换逻辑与运算符&(按位与)?

    【讨论】:

    • (A[:,0]==origin) && (A[:,1]==destination) ^ SyntaxError: invalid syntax
    • Python 中的逻辑与运算符为and
    • 反正也没有意义。 (A[:,0]==origin) 的返回值是一个布尔数组。您不能对两个数组进行逻辑与。
    • NumPy 使用 '&' 作为元素运算符,这可能是本例的意图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2011-10-31
    • 2011-01-29
    • 2018-03-07
    • 2011-10-30
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多