【发布时间】:2020-11-07 18:32:49
【问题描述】:
我想将函数any()同时应用于矩阵的所有行。
如果我将any() 与向量一起使用,当然只要任何元素返回True,它就会返回True(或1):
import numpy as np
print any(np.array([0,0,0,1]))*1
现在假设我有一个矩阵。如果我想获得一个带有1 和0 的向量,具体取决于矩阵的每个元素在单独使用时是否会返回True,我可以使用for 循环来实现:
matrix=np.array([[0,0,0],[0,0,1],[0,1,0]])
result=np.zeros(len(matrix)).astype('int')
i=0
for line in matrix:
result[i]=any(matrix[i])
i+=1
print result
但是,这种方法似乎不太实用,因为矩阵的元素将使用for 循环一次处理一次。有没有更好的方法将any 扩展到矩阵输入,从而返回一个包含多个1 和0 的向量?
请注意,我不想使用 matrix.any(),因为它只会返回单个 True 或 False 语句,而我希望将其应用于矩阵的每个单独元素。
【问题讨论】:
-
请提供一些预期的输入/输出,因为您的目标不是很明确。
any没有“应用于”任何东西,也没有返回向量。它仅返回True或False提供的可迭代元素中的元素是否真实 -
如果您想要的只是一行 1,如果该行中的任何元素是真实的,那么
np.where可能会有所帮助。 -
@DeepSpace TY。是的,我想获得与我所写内容相同的输出,但不使用
for循环。可能np.where确实是答案。
标签: python numpy boolean numpy-ndarray