大矩阵求各行各true值索引
我在写一个pygame程序,其中需要执行以下任务:给出一个nx6的矩阵,例如
[[ True False False FalseTrue False]
[ True FalseTrue FalseTrue False]
[ True False False FalseTrue False]
[ True FalseTrue FalseTrue False]
[ True False False FalseTrue False]
[ True FalseTrue FalseTrue False]
[ True False False FalseTrue False]
[ True FalseTrue FalseTrue False]]
我需要获得这个矩阵各行各个True值的索引,以这个矩阵为例,输出应该是:
[, , , , , , , ]
实际情况是,这个n值会比较大,最高可能会到十万左右,而且我还需要在游戏循环里不断执行这个运算,因此性能非常重要
求各位大佬解答 可以使用numpy库来进行矩阵运算,使用np.where函数可以快速找到True值的索引。
具体实现代码如下:
import numpy as np
# 定义一个nx6的矩阵
matrix = np.array([,
,
,
,
,
,
,
])
# 使用np.where函数找到True值的索引
result = .tolist() for row in matrix]
print(result)
输出结果为:
[, , , , , , , ]
使用numpy库进行矩阵运算可以大大提高程序的性能,因为numpy库是使用C语言编写的,运算速度非常快。 你可以使用NumPy库来处理大矩阵,并且可以利用NumPy的向量化计算实现更快速的代码运行。以下是一个示例代码,用于实现你所描述的功能:
import numpy as np
# 构建样例数据
data = np.array([,
,
,
,
,
,
,
])
# 使用 np.argwhere 函数获取各行 True 值的索引
indices =
# 输出结果
print(indices)
该代码首先使用NumPy将Python列表转换为NumPy数组,然后使用np.argwhere函数获取各行True值的索引。由于np.argwhere函数返回的是二维数组,每个元素是一个长度为2的一维数组,表示True值在行和列上的索引,因此还需要使用flatten和tolist函数将其转换为列表形式。最后,使用列表推导式处理每一行,得到一个包含各行True值索引的列表。
这种方法可以高效地处理包含大量数据的矩阵,而且代码运行速度也比循环方式要快得多。
希望这个代码对你有帮助!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案 求解各行各True值索引的Python代码示例:
你可以使用以下代码来实现这个功能:
matrix = [,
,
,
,
,
,
,
]
result = []
for row in matrix:
indices =
result.append(indices)
print(result)
这段代码会遍历矩阵的每一行,对于每一行,利用列表推导式找到该行中值为True的元素的索引,并将这些索引存储在一个列表中。最后,输出结果列表。
这种方法在性能方面是相对高效的,可以处理较大的矩阵。
希望这段代码能够满足你的需求!如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页:
[1]