我是靠谱客的博主 闪闪大树,最近开发中收集的这篇文章主要介绍c 语言swap交换矩阵两列,交换二维矩阵的两列相同行的最快方法是什么?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我有一个问题,我需要找到一个列/行的最佳排列。所以当我把列I与列j交换时,我必须交换第I行和第j行。分数将应用于结果矩阵(模拟退火)。在

它很管用,但我不知道它是否能更快。在

我做什么#!/usr/bin/env python

"""Swap rows and colums of a square integer matrix simultaneously."""

import numpy as np

import random

random.seed(0)

def swap(cm, i, j):

"""

Swap row and column i and j in-place.

Examples

--------

>>> cm = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])

>>> swap(cm, 2, 0)

array([[8, 7, 6],

[5, 4, 3],

[2, 1, 0]])

"""

# swap columns

copy = cm[:, i].copy()

cm[:, i] = cm[:, j]

cm[:, j] = copy

# swap rows

copy = cm[i, :].copy()

cm[i, :] = cm[j, :]

cm[j, :] = copy

return cm

def main(n):

import time

cm = np.random.randint(0, 150000, size=(n, n))

swaps = 10**6

t0 = time.time()

for step in range(swaps):

# Choose what to swap

i = random.randint(0, n - 1)

j = i

while j == i:

j = random.randint(0, n - 1)

cm = swap(cm, i, j)

t1 = time.time()

print("{:0.2f} swaps / sec".format(swaps / (t1 - t0)))

if __name__ == '__main__':

import doctest

doctest.testmod()

main(369)

我所做的一切代码为:152642.58次/秒-158248.08次/秒

cm[:, [i, j]] = cm[:, [j, i]]用于交换列:90562.43交换/秒-97625.79交换/秒

最后

以上就是闪闪大树为你收集整理的c 语言swap交换矩阵两列,交换二维矩阵的两列相同行的最快方法是什么?的全部内容,希望文章能够帮你解决c 语言swap交换矩阵两列,交换二维矩阵的两列相同行的最快方法是什么?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部