函数 `any()` 应用于多个数组,而不仅仅是一个
function `any()` applied to several arrays rather than just one
我想同时将函数 any()
应用于矩阵的所有行。
如果我将 any()
与向量一起使用,当然,只要任何元素 return True
:
import numpy as np
print any(np.array([0,0,0,1]))*1
现在假设我有一个矩阵。如果我想获得一个带有 1
和 0
的向量,具体取决于矩阵的每个元素单独使用时是否会 return 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
扩展到矩阵输入,这样 return 就是上面几个 1
和 0
的向量?
请注意,我不想使用 matrix.any()
,因为它只会 return 单个 True
或 False
语句,而我希望它应用于矩阵的每个单独元素。
你可以这样做:
import numpy as np
matrix = np.array([[0, 0, 0], [0, 0, 1], [0, 1, 0]])
matrix_sums = np.sum(matrix, axis=1)
are_truthy_matrix_sums = matrix_sums > 0
print are_truthy_matrix_sums
我们使用 np.sum
将矩阵简化为具有总和的一维数组,然后将这些总和与 0 进行比较,以查看这些行中是否存在任何真值。
这会打印:
[False True True]
numpy.any(matrix, axis=1)
numpy.any
已经有你想要的功能。
我想同时将函数 any()
应用于矩阵的所有行。
如果我将 any()
与向量一起使用,当然,只要任何元素 return True
:
import numpy as np
print any(np.array([0,0,0,1]))*1
现在假设我有一个矩阵。如果我想获得一个带有 1
和 0
的向量,具体取决于矩阵的每个元素单独使用时是否会 return 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
扩展到矩阵输入,这样 return 就是上面几个 1
和 0
的向量?
请注意,我不想使用 matrix.any()
,因为它只会 return 单个 True
或 False
语句,而我希望它应用于矩阵的每个单独元素。
你可以这样做:
import numpy as np
matrix = np.array([[0, 0, 0], [0, 0, 1], [0, 1, 0]])
matrix_sums = np.sum(matrix, axis=1)
are_truthy_matrix_sums = matrix_sums > 0
print are_truthy_matrix_sums
我们使用 np.sum
将矩阵简化为具有总和的一维数组,然后将这些总和与 0 进行比较,以查看这些行中是否存在任何真值。
这会打印:
[False True True]
numpy.any(matrix, axis=1)
numpy.any
已经有你想要的功能。