裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Julia の小ネタ--039 Julia で,内包表記で組合せ(コンビネーション)を列挙する

2021年10月31日 | ブログラミング

内包表記で組合せ(コンビネーション)を列挙する

Python だと,

 >>> a, b = 5, 2
 >>> [[a, b] for a in range(5) for b in range(a)]
 [[1, 0], [2, 0], [2, 1], [3, 0], [3, 1], [3, 2], [4, 0], [4, 1], [4, 2], [4, 3]]

を得る。

Julia は Python が 0 オリジンなのに対して 1 オリジンなので,以下のようになる。

  [[a, b] for a in 1:5 for b in 1:a-1]
  [[a-1, b-1] for a in 1:5 for b in 1:a-1]
  using Combinatorics
  for i in combinations(1:5, 2)
     println(i)
  end
  [1, 2]
  [1, 3]
  [1, 4]
  [1, 5]
  [2, 3]
  [2, 4]
  [2, 5]
  [3, 4]
  [3, 5]
  [4, 5]

順序を揃えたいなら

  using Combinatorics
  for i in combinations(1:5, 2)
     println([i[2], i[1]])
  end
  [2, 1]
  [3, 1]
  [4, 1]
  [5, 1]
  [3, 2]
  [4, 2]
  [5, 2]
  [4, 3]
  [5, 3]
  [5, 4]

とか

  using Combinatorics
  for i in combinations(1:5, 2)
     println([i[2]-1, i[1]-1])
  end
  [1, 0]
  [2, 0]
  [3, 0]
  [4, 0]
  [2, 1]
  [3, 1]
  [4, 1]
  [3, 2]
  [4, 2]
  [4, 3]
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Julia の小ネタ--038 文字列からデータフレームを読み込む

2021年10月31日 | ブログラミング

Julia の小ネタ--038 文字列からデータフレームを読み込む

 そのような場合には,プログラム中に「""" 改行を含む文字列 """」のようにデータを記述し,そこからデータフレームに読み込むことができる。
 CSV.read( ) の第1引数は通常はファイルパスであるが,IOBffer( ) で引数に文字列を指定することもできる。
 欄の区切り文字は delim で指定するが,例のように空白で(桁を揃えて)区切られている場合は,ignorerepeated=true を指定しなければならない。

  using CSV, DataFrames
  anscombe = CSV.read(IOBuffer("""
      x1    x2    x3    x4    y1    y2    y3    y4
      10    10    10     8  8.04  9.14  7.46  6.58
       8     8     8     8  6.95  8.14  6.77  5.76
      13    13    13     8  7.58  8.74 12.7   7.71
       9     9     9     8  8.81  8.77  7.11  8.84
      11    11    11     8  8.33  9.26  7.81  8.47
      14    14    14     8  9.96  8.1   8.84  7.04
       6     6     6     8  7.24  6.13  6.08  5.25
       4     4     4    19  4.26  3.1   5.39 12.5
      12    12    12     8 10.8   9.13  8.15  5.56
       7     7     7     8  4.82  7.26  6.42  7.91
       5     5     5     8  5.68  4.74  5.73  6.89
  """), DataFrame, delim=" ", ignorerepeated=true)

11 rows × 8 columns

  x1 x2 x3 x4 y1 y2 y3 y4
  Int64 Int64 Int64 Int64 Float64 Float64 Float64 Float64
1 10 10 10 8 8.04 9.14 7.46 6.58
2 8 8 8 8 6.95 8.14 6.77 5.76
3 13 13 13 8 7.58 8.74 12.7 7.71
4 9 9 9 8 8.81 8.77 7.11 8.84
5 11 11 11 8 8.33 9.26 7.81 8.47
6 14 14 14 8 9.96 8.1 8.84 7.04
7 6 6 6 8 7.24 6.13 6.08 5.25
8 4 4 4 19 4.26 3.1 5.39 12.5
9 12 12 12 8 10.8 9.13 8.15 5.56
10 7 7 7 8 4.82 7.26 6.42 7.91
11 5 5 5 8 5.68 4.74 5.73 6.89
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村