Python 如何在2D numpy阵列上执行行或操作?

Python 如何在2D numpy阵列上执行行或操作?,python,numpy,Python,Numpy,我有一个numpy数组 [[1, 0, 1], [1, 0, 0], [0, 0, 1]] 我希望对其执行行操作或操作,以便生成的数组如下所示: [1,0,1] 在不实现循环的情况下,有没有一种直接的方法来实现这一点? 如果有人能提出一些建议,我将不胜感激。谢谢您可以通过调用生成布尔掩码,然后转换为int,将True和False分别转换为1和0: In[193]: a.any(0).astype(int) Out[193]: array([1, 0, 1]) any的第一个参数是轴

我有一个numpy数组

[[1, 0, 1],
  [1, 0, 0],
  [0, 0, 1]]
我希望对其执行行操作或操作,以便生成的数组如下所示:

[1,0,1]

在不实现循环的情况下,有没有一种直接的方法来实现这一点?
如果有人能提出一些建议,我将不胜感激。谢谢

您可以通过调用生成布尔掩码,然后转换为
int
,将
True
False
分别转换为
1
0

In[193]:
a.any(0).astype(int)

Out[193]: array([1, 0, 1])
any
的第一个参数是轴arg,这里我们可以看到轴0和1之间的差异:

In[194]:
a.any(0)

Out[194]: array([ True, False,  True], dtype=bool)

In[195]:
a.any(1)

Out[195]: array([ True,  True,  True], dtype=bool)

如果您喜欢使用按位or(Python中的是按位or,而的是布尔or),则可以使用。但是,这只需要两个阵列作为输入,因此可以使用Numpy的功能组合阵列中的所有子阵列

>>> a = np.array([[1, 0, 1],[1, 0, 0],[0, 0, 1]])
>>> np.bitwise_or.reduce(a, 0)
array([1, 0, 1])
我喜欢这是多么明确,但是
a.any()
解决方案非常常见,不会引起任何人的注意。
reduce
的第一个参数当然是
数组
,第二个参数是要沿
轴缩小的
轴。所以,如果您愿意,您也可以按列操作,或者按任何其他轴操作

>>> a = np.array([[1, 0, 1],[1, 0, 0],[0, 0, 1]])
>>> np.bitwise_or.reduce(a, 1)
array([1, 1, 1])

b=a[0,:]| a[1,:]| a[2,:]其中a是numpy数组
。这很有效。我在寻找更精确、更紧凑的东西。嘿,谢谢,@Alexander Reynolds,这正是我一直在寻找的东西,我用30秒的时间找到了这个答案。虽然我会使用
np.bitwise\u或.reduce(a,0)
来更加明确。@DanielF如果我同意,我会把它加进去。谢谢@迪帕扬达斯如果我的解决方案是你想要的,你能接受我的回答吗?否则,如果您对我可以详细阐述的任何扩展感兴趣。@deepayanda太好了,我只是添加了所有相关函数的文档链接。