|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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语言编写的,运算速度非常快。
|
|