马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我在写一个pygame程序,其中需要执行以下任务:
给出一个nx6的矩阵,例如[[ True False False False True False]
[ True False True False True False]
[ True False False False True False]
[ True False True False True False]
[ True False False False True False]
[ True False True False True False]
[ True False False False True False]
[ True False True False True False]]
我需要获得这个矩阵各行各个True值的索引,以这个矩阵为例,输出应该是:[[0, 4], [0, 2, 4], [0, 4], [0, 2, 4], [0, 4], [0, 2, 4], [0, 4], [0, 2, 4]]
实际情况是,这个n值会比较大,最高可能会到十万左右,而且我还需要在游戏循环里不断执行这个运算,因此性能非常重要
求各位大佬解答
可以使用numpy库来进行矩阵运算,使用np.where函数可以快速找到True值的索引。
具体实现代码如下:
import numpy as np
# 定义一个nx6的矩阵
matrix = np.array([[True, False, False, False, True, False],
[True, False, True, False, True, False],
[True, False, False, False, True, False],
[True, False, True, False, True, False],
[True, False, False, False, True, False],
[True, False, True, False, True, False],
[True, False, False, False, True, False],
[True, False, True, False, True, False]])
# 使用np.where函数找到True值的索引
result = [np.where(row)[0].tolist() for row in matrix]
print(result)
输出结果为:
[[0, 4], [0, 2, 4], [0, 4], [0, 2, 4], [0, 4], [0, 2, 4], [0, 4], [0, 2, 4]]
使用numpy库进行矩阵运算可以大大提高程序的性能,因为numpy库是使用C语言编写的,运算速度非常快。
|