函数 `any()` 应用于多个数组,而不仅仅是一个

any()我想同时将该函数应用于矩阵的所有行。


如果我使用any()向量,当然它会在任何元素返回时返回True(或者在我的情况下) :1True


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语句,而我希望它应用于矩阵的每个单独元素。


潇潇雨雨
浏览 104回答 2
2回答

富国沪深

numpy.any(matrix, axis=1)numpy.any已经有你想要的功能。

尚方宝剑之说

你可以这样做:import numpy as npmatrix = np.array([[0, 0, 0], [0, 0, 1], [0, 1, 0]])matrix_sums = np.sum(matrix, axis=1)are_truthy_matrix_sums = matrix_sums > 0print are_truthy_matrix_sumsnp.sum在将这些总和与 0 进行比较以查看这些行中是否存在任何真实值之前,我们使用将矩阵简化为具有总和的一维数组。这打印:[False  True  True]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python