fgr*_*egg 3 python arrays numpy
我有一个 numpy 数组
a = numpy.array([1,2,3,0])
Run Code Online (Sandbox Code Playgroud)
我想做类似的事情
a == numpy.array([0,1,2,3])
Run Code Online (Sandbox Code Playgroud)
并得到
[[False, True, False, False],
[False, False, True, False],
[False, False, False, True ],
[True, False, False, False]]
Run Code Online (Sandbox Code Playgroud)
换句话说,我希望第 i 列显示 的每个元素是否a等于 i。这感觉就像 numpy 可能会变得容易的事情。有任何想法吗?
这里使用的关键概念是广播。
a = numpy.array([1,2,3,0])
b = numpy.array([0,1,2,3])
a[..., None] == b[None, ...]
Run Code Online (Sandbox Code Playgroud)
结果:
>>> a[..., None] == b[None, ...]
array([[False, True, False, False],
[False, False, True, False],
[False, False, False, True],
[ True, False, False, False]], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
了解如何使用广播将极大地改进您的 NumPy 代码。你可以在这里读到它: