Yado_tech

旅館+ITとはなんぞ

配列を転置する

stackoverflow.com

より

Spreadsheetで転置して貼り付けたいときあるもんね。

function transpose(a) {

  // Calculate the width and height of the Array
  var w = a.length || 0;
  var h = a[0] instanceof Array ? a[0].length : 0;

  // In case it is a zero matrix, no transpose routine needed.
  if(h === 0 || w === 0) { return []; }

  /**
   * @var {Number} i Counter
   * @var {Number} j Counter
   * @var {Array} t Transposed data is stored in this array.
   */
  var i, j, t = [];

  // Loop through every item in the outer array (height)
  for(i=0; i<h; i++) {

    // Insert a new row (array)
    t[i] = [];

    // Loop through every item per item in outer array (width)
    for(j=0; j<w; j++) {

      // Save transposed data.
      t[i][j] = a[j][i];
    }
  }

  return t;
}

pythonならどうだろうと思って調べた。

import numpy as np

Array =np.array(【転置したい行列】)
Transposed_Array = Array.T
Listed_transposed_Array =Transposed_Array.tolist()

numpyでリストを行列にして転置してまたリストに直すだけ
て簡単だった。
やはりPythonスゴイ

て思ったらUnderscore.jsというライブラリがあるらしい

var _ = Underscore.load();
var Transposed_Array = _.zip.apply(_,【転置したい配列】);

2行だったwjsのがすごいじゃねーか