saliton / HDF5

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Open In Colab

C言語でHDF5に逐次アクセスする方法

先日、HDF5形式のデータを処理する機会がありました。その際、中のデータに逐次アクセスする方法を探すのに少し苦労したので、忘備録として記事にします。

データはann-benchmarksのglove-100-angularです。Pythonならh5pyで簡単に逐次アクセスできるのですが、とある事情でC言語が必要でした。しかし、目に付くサンプルコードは大きなバッファを用意して全体を一括で読み込むものばかりでした。今回、ゆくゆくはメモリに載り切らないサイズのデータを扱う予定なので、逐次アクセスが必要です。いろいろ探してようやく発見したのがここで、その中のRead 2D dataset by rowです。

ただ、定数が決め打ちされていたりで、汎用性に乏しかったので、改造しました。以下がその経緯です。

まずはデータを取得します。

!wget http://ann-benchmarks.com/glove-100-angular.hdf5
--2022-11-07 05:28:13--  http://ann-benchmarks.com/glove-100-angular.hdf5
.
.
.
glove-100-angular.h 100%[===================>] 462.93M  33.3MB/s    in 15s

2022-11-07 05:28:28 (31.8 MB/s) - ‘glove-100-angular.hdf5’ saved [485413888/485413888]

HDF5関連のツールをインストールして、データの中身を覗きます。

!apt install hdf5-tools
Reading package lists... Done
Building dependency tree
Reading state information... Done
.
.
.
Setting up hdf5-tools (1.10.0-patch1+docs-4) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

4つのDatasetが含まれていることが分かります。

!h5ls glove-100-angular.hdf5
distances                Dataset {10000, 100}
neighbors                Dataset {10000, 100}
test                     Dataset {10000, 100}
train                    Dataset {1183514, 100}
!h5ls -v glove-100-angular.hdf5
Opened "glove-100-angular.hdf5" with sec2 driver.
distances                Dataset {10000/10000, 100/100}
    Location:  1:477411840
    Links:     1
    Storage:   4000000 logical bytes, 4000000 allocated bytes, 100.00% utilization
    Type:      native float
neighbors                Dataset {10000/10000, 100/100}
    Location:  1:1800
    Links:     1
    Storage:   4000000 logical bytes, 4000000 allocated bytes, 100.00% utilization
    Type:      native int
test                     Dataset {10000/10000, 100/100}
    Location:  1:1528
    Links:     1
    Storage:   4000000 logical bytes, 4000000 allocated bytes, 100.00% utilization
    Type:      native float
train                    Dataset {1183514/1183514, 100/100}
    Location:  1:928
    Links:     1
    Storage:   473405600 logical bytes, 473405600 allocated bytes, 100.00% utilization
    Type:      native float

今回、この中のデータタイプがfloatのdistance, test, trainにアクセスすることを考えます。以下で、各パートを説明してから、最後にColabで動作するサンプルコード全体を示します。

まず、HDF5ファイルをオープンします。

hid_t file_id = H5Fopen(h5file, H5F_ACC_RDONLY, H5P_DEFAULT);

次にその中のデータセットをオープンします。

hid_t dataset_id = H5Dopen(file_id, dataset_name, H5P_DEFAULT);

データセットの構造データを取得するのに必要なIDは以下で取得します。

hid_t filespace_id = H5Dget_space(dataset_id);

このfilespace_idを使って、データセットの次元数を取得できます。

int ndims = H5Sget_simple_extent_ndims(filespace_id);
hsize_t *dims = malloc(sizeof(hsize_t) * ndims);
H5Sget_simple_extent_dims(filespace_id, dims, NULL);

今回はndimsは2になります。dimsに各次元の要素数が取得されます。

データのタイプは以下で取得できます。

hid_t type = H5Dget_type(dataset_id);

これがfloatであるか否かは以下で判定できます。

H5TEqual(type, H5T_NATIVE_FLOAT)

次にデータを受け取るバッファの型を作成します。今回の場合、要素数100のベクトルです。

hsize_t dimsmr[1] = {dims[1]};
hid_t memspace_id = H5Screate_simple(1, dimsmr, NULL);

バッファを用意します。

float *rdata = malloc(dims[1] * sizeof(float));

データの読み初めの位置は以下のように指定します。

hsize_t roffset[2] = {start, 0};

データの読み取り数は以下のように指定します。

hsize_t rcount[2] = {1, dims[1]};

データの読み取り位置を設定するには以下のようにします。

H5Sselect_hyperslab(filespace_id, H5S_SELECT_SET, roffset, NULL, rcount, NULL)

そして、実際の読み取りは以下。

H5Dread(dataset_id, H5T_NATIVE_FLOAT, memspace_id, filespace_id, H5P_DEFAULT, rdata);

これで1ベクトルだけ読み取られます。後はこれを必要な回数、繰り返します。ただし、読み取り位置を進めるためにループの最後でroffset[0]をインクリメントします。

roffset[0]++;

以下に全体のコードを示します。見やすくするため一部のエラー処理は省いています。

%%writefile h5range.c

#include <stdlib.h>
#include <hdf5.h>

int main(int argc, const char **argv)
{
  if (argc < 5)
  {
    printf("Usage: %s %s\n", argv[0], "file.h5 dataset_name start count");
    return -1;
  }

  const char *h5file = argv[1];
  const char *dataset_name = argv[2];
  int start = atoi(argv[3]);
  int count = atoi(argv[4]);

  // ファイルIDの取得
  hid_t file_id = H5Fopen(h5file, H5F_ACC_RDONLY, H5P_DEFAULT);

  // データセットIDの取得
  hid_t dataset_id = H5Dopen(file_id, dataset_name, H5P_DEFAULT);

  // データ空間IDの取得
  hid_t filespace_id = H5Dget_space(dataset_id);

  // データの次元数の取得
  int ndims = H5Sget_simple_extent_ndims(filespace_id);
  if (ndims != 2) {
    printf("Error: Dimension of %s must be 2.\n", dataset_name);
    return -1;
  }
  hsize_t *dims = malloc(sizeof(hsize_t) * ndims);
  H5Sget_simple_extent_dims(filespace_id, dims, NULL);

  // データ型の確認
  hid_t type = H5Dget_type(dataset_id);
  if (!H5Tequal(type, H5T_NATIVE_FLOAT)) {
      printf("Error: Data type is not float.\n");
      return -1;
  }

  // バッファの型の作成
  hsize_t dimsmr[1] = {dims[1]};
  hid_t memspace_id = H5Screate_simple(1, dimsmr, NULL);

  // バッファの用意
  float *rdata = malloc(dims[1] * sizeof(float));

  // バッファの読み取り位置
  hsize_t roffset[2] = {start, 0};

  // 読み取り数
  hsize_t rcount[2] = {1, dims[1]};

  herr_t status;
  for (int i = 0; i < count; i++) {
    // 読み取り位置の設定
    status = H5Sselect_hyperslab(filespace_id, H5S_SELECT_SET, roffset,
                                 NULL, rcount, NULL);

    // 読み取り
    status = H5Dread(dataset_id, H5T_NATIVE_FLOAT, memspace_id, filespace_id,
                     H5P_DEFAULT, rdata);

    // データ表示
    printf("%d ", start + i);
    for (int j = 0; j < dims[1]; j++) printf(" %f", rdata[j]);
    printf("\n");

    // 読み取り位置の更新
    roffset[0]++;
  }

  // 後始末
  status = H5Sclose(filespace_id);
  status = H5Sclose(memspace_id);
  status = H5Dclose(dataset_id);
  status = H5Fclose(file_id);
  free(rdata);
  free(dims);
  return 0;
}
Writing h5range.c

このコードは以下のようにコンパイルできます。HDF5用の環境設定がなされているh5ccというコマンドが便利です。

!h5cc h5range.c -o h5range

実際にデータセット名にtestと開始位置、取得数を指定して実行するとこうなります。

!./h5range glove-100-angular.hdf5 test 100 10
100  -0.094124 0.338080 -0.190860 0.090983 -0.321030 -0.799010 0.034296 -0.801610 -0.416370 -0.715350 0.506190 -0.265460 0.517490 -0.208460 -0.725510 0.213040 0.091537 0.310090 -0.405670 -0.171360 0.208950 0.322130 -1.513000 -0.193310 -0.330370 1.081100 0.077313 0.076293 0.532550 -0.465560 0.793620 1.453500 0.675430 -0.024423 0.046899 -0.603670 0.521600 0.498710 -0.478720 0.323250 1.034100 0.492070 0.459110 -0.378790 -0.221090 -0.521980 0.666180 -0.156820 0.208080 0.350020 1.059800 -0.033208 0.357770 0.522280 -1.143500 -0.021892 -0.026224 0.736040 0.034871 -0.292770 -0.098150 -0.049495 -0.048941 0.018041 -1.104900 0.510700 0.430610 0.161130 0.089007 0.829150 -1.204400 0.815650 -0.288410 -1.224000 1.379100 -0.273440 1.754400 -0.702620 0.494940 1.453000 -0.937610 -0.833340 -0.231860 -0.424260 0.519010 -0.198480 0.374360 -0.907560 -0.281630 0.254800 -0.195280 1.006500 0.309480 -0.232760 0.839360 -0.857950 -0.627310 -0.576660 -0.259010 -0.098490
101  0.465470 -0.762730 0.020272 0.423900 0.998520 -0.572310 -0.300860 -0.481510 -0.807590 -0.637290 -0.719570 -0.274890 0.661610 0.206740 -0.471380 1.069200 -0.069173 0.658590 -1.251500 -0.813540 0.853120 -0.893320 0.568080 -1.071900 0.284980 0.112010 0.579640 0.060882 -0.387300 -0.573660 -0.184990 0.881480 -0.085400 -0.300220 -0.846870 -0.049195 1.312300 -0.196410 -0.101000 -0.007942 -0.381040 -1.098400 0.447720 -1.201000 -0.008050 -1.648700 0.521890 -0.517500 -0.643750 0.105080 1.169800 -0.439440 -1.666000 -0.246320 -0.611970 -0.112660 1.125400 0.040314 -0.206820 0.018072 0.239320 -1.326900 2.554600 1.152300 -1.372100 1.702700 0.841950 0.582740 0.241090 0.137230 -1.169400 1.231800 -0.771290 0.367340 -0.465320 -0.289600 0.691750 0.258000 0.310570 1.076900 -0.851670 0.057947 -1.108000 0.801930 0.947100 -0.163370 0.615310 -0.325430 1.106000 -0.390960 0.030869 -0.130410 0.968810 0.827300 1.562000 -0.104190 0.139840 1.083200 0.569620 -0.178500
102  -0.141490 -0.602940 -0.324780 0.007442 -0.095837 0.199770 -0.213950 -0.487290 0.382250 0.276300 0.205510 0.181630 1.586500 0.279430 -0.774620 0.329180 -0.203780 -0.115530 0.225480 0.315590 0.439220 0.774800 0.259880 0.563830 -0.280690 0.549620 0.736250 0.569540 0.343550 0.001127 0.620650 0.017176 0.063790 -0.358230 -0.652070 -0.616800 -0.117050 0.503030 0.141330 -0.174580 0.704180 -0.398440 -0.216910 -0.406580 -0.423290 0.551660 0.572550 0.564260 1.083400 0.954130 0.606490 -0.298280 0.098470 0.974130 0.029584 0.292510 -0.919190 -0.322400 0.224490 -0.536770 0.830730 -0.073229 0.230210 0.344290 -0.576620 0.030888 0.448810 -0.666090 -0.007650 0.492310 0.658210 -0.811740 -0.329420 -0.396230 -0.068171 0.623690 0.568130 0.045020 0.045166 0.845560 -0.511140 -0.558690 0.524250 -0.039312 0.058053 -0.663910 0.207640 -0.729480 -0.136100 -0.935480 -0.489770 -0.143860 -0.515090 0.301460 -0.308890 -0.266490 0.921300 -0.074217 -1.727300 0.844260
103  0.068420 -0.626120 0.047550 -0.016099 0.048197 -0.170270 0.162880 -0.295130 0.071287 -1.275500 0.211220 -0.647700 0.145060 -0.013382 0.103310 -0.454230 0.082623 0.108180 -0.035548 0.502180 -0.658470 0.207630 -0.360200 -0.383970 -0.095905 1.839900 -0.184140 -0.015352 -0.767310 -0.113320 0.355160 0.010481 0.577730 -0.038969 -0.747780 0.525120 -0.402420 -0.096698 0.093302 0.235670 0.962930 -0.190590 -0.013823 0.702470 0.202370 0.592540 -0.288620 0.597100 -0.166760 0.105840 1.085900 0.623340 -0.607350 -0.086605 0.087138 -0.394040 0.308520 -0.119690 -0.585630 -0.064108 -0.305900 0.724340 -0.601310 -0.034598 -0.696860 0.362130 0.479980 -0.114300 -0.064808 0.372740 -0.426930 0.253460 -0.281730 0.548340 0.713460 0.267660 -0.099164 0.234500 -0.014482 -0.510390 -0.365640 0.010923 0.233730 -0.159830 -0.250400 0.091265 0.722020 -0.361850 0.270320 0.390430 0.352420 0.561560 -0.410060 0.094524 -0.816130 0.538560 0.003401 0.298900 0.072936 0.151870
104  0.101140 -0.268440 0.002347 -0.302870 -0.071675 -0.369350 -0.140420 0.193470 -0.836870 -0.921300 -0.801160 0.653220 0.701670 1.055200 -0.138530 -0.143010 0.422910 0.191130 1.034700 -0.357410 0.477030 -0.016655 1.241300 -1.385800 0.364170 0.255680 0.203950 -0.315070 -0.126490 0.689420 1.404700 -0.116520 -0.055818 -0.559570 0.035053 0.210500 -0.304630 -0.653610 -0.170840 -0.202670 -0.143710 0.115260 -0.091813 0.475760 0.600170 0.239460 -0.293780 0.382400 -0.225470 1.152700 -0.749890 -0.394860 -0.316710 -0.331940 -0.962530 -0.893820 -0.182930 -0.116820 -1.187600 -0.308020 1.106900 -0.458480 -0.827750 1.040100 -0.884350 -0.515910 0.676050 1.648800 -0.381470 -0.126110 -1.511100 0.574690 -0.125870 -0.321670 -0.725030 0.041088 -0.155520 -0.012045 0.258790 -0.622860 0.217140 -1.484300 0.002502 -0.135600 -0.062417 -0.729570 1.032600 -1.640200 -0.285950 -0.675500 0.309380 -0.700090 0.444430 -0.499030 0.831020 0.409770 -0.461140 -0.073358 0.794150 0.712250
105  0.336180 -0.493780 -0.371660 0.367010 0.851860 -0.812380 1.514000 -0.819610 -0.781510 0.405980 -1.115700 -0.553690 0.608550 -0.940380 0.100580 -0.480050 -0.238300 0.444930 -0.269380 0.668090 0.345380 -0.307140 -0.158380 -0.067542 -0.391700 0.536690 0.703010 -0.326250 -0.034951 0.211960 1.640200 0.848370 1.181000 -1.092100 -1.399000 0.373460 -0.479810 -0.454030 0.378950 0.585060 0.846870 0.241610 -0.274510 -0.086764 -0.466880 -0.804620 0.716970 -0.268660 0.686640 0.714640 0.463610 0.686050 0.455580 0.433790 -0.828620 0.105650 -1.177500 -0.288770 0.872890 -0.650000 -0.224530 1.397000 0.344210 0.403070 -0.526330 0.437580 0.940900 0.710470 0.011139 -0.104050 -1.307200 0.565220 -0.824470 -0.671040 0.275670 0.249030 -0.524830 -0.513660 -0.625070 0.868050 -1.372900 0.544630 -0.202470 0.745780 -0.802550 -0.372450 0.863830 -1.179600 -1.325900 -0.671340 1.175900 0.283710 -0.124000 0.968110 0.262430 -0.079392 0.227380 0.188200 0.354220 0.878720
106  -0.363590 0.340350 0.693500 0.395010 -0.064898 0.043411 -0.890120 0.609900 -0.241900 -0.570940 0.113610 -0.558600 -0.324280 -0.727430 0.245150 -0.072813 -0.275070 0.073895 1.022700 0.137000 -1.062300 0.127420 -0.030562 -0.444140 -0.401150 0.875740 0.295370 -0.041493 -0.198550 -0.963790 0.704810 0.751370 -0.098225 -1.710500 0.057154 -0.144030 0.618080 -0.185700 -0.422120 0.426410 0.630670 -0.364150 0.425200 -0.476490 -0.552030 -0.940090 0.799050 -0.121170 0.922380 0.101390 1.539700 0.421540 0.277470 -0.174700 -1.115600 -0.202900 0.794490 0.081000 0.161750 -0.105470 -0.788280 0.738860 -0.146730 -0.088626 -1.134200 1.241000 -0.069622 0.635610 0.754720 -0.835070 -0.475960 0.091624 -0.107820 0.753870 0.261710 1.172900 0.008418 0.392050 0.424700 0.659460 -0.143530 1.144900 -0.040872 0.031070 0.581740 0.076328 0.146070 -0.370410 -0.943390 -0.667250 1.353400 -1.170400 0.158270 -0.758060 -0.757190 -0.395250 -0.321970 -0.671680 0.488000 0.392590
107  -0.289610 -0.055792 0.026324 0.541750 0.105730 0.428840 -0.353450 -0.210000 0.058706 -0.457980 0.123350 -0.319510 -0.269970 -0.250490 0.003160 -0.214150 -0.348860 -0.042921 -0.096596 0.199680 -0.824990 1.010700 -0.196240 0.013770 -0.355790 1.135700 0.381410 0.429610 -0.264530 -0.368100 0.826640 0.877560 0.327280 -0.621650 -0.584500 -0.471810 -0.495370 0.269040 -0.099457 -0.161310 0.341690 -0.261380 0.102150 0.190680 -0.456320 0.571170 0.248180 -0.674490 0.131030 -0.135880 0.783890 0.132110 -0.400510 0.421800 -0.115990 0.274540 0.081659 -0.261040 -0.346100 0.427880 0.265750 0.936470 -0.125430 0.692820 0.403580 1.033400 0.485710 0.154680 -0.390220 0.458390 -0.302930 0.405740 -0.511240 0.251490 -0.051253 -0.238160 -0.128320 -0.693560 -0.267120 0.029992 -0.688560 1.018900 0.194150 0.090437 -0.296280 0.208830 -0.177650 -0.601070 0.596760 -0.255920 -0.358670 0.659610 -0.261300 0.750060 -0.127120 0.176140 0.009700 0.452410 -0.235670 0.262900
108  -0.088829 0.212550 0.026513 0.697540 -0.489840 0.168140 -0.066867 -0.208140 0.002116 0.819700 0.261440 0.127240 0.505160 0.421070 0.270820 -0.454680 0.669680 -0.357820 -0.583860 -0.330720 0.089312 -0.073127 -0.411820 -0.283990 -0.233400 0.017831 0.048947 0.760040 0.511780 -0.408130 0.568950 -0.841790 1.322600 0.409400 -1.205100 -0.383520 0.073580 0.253930 0.558590 0.255110 0.644520 -0.194120 -0.082097 -0.215300 -0.592090 0.318040 -0.445210 0.384120 0.100620 0.480940 0.590440 0.269030 0.064831 0.328160 -0.419170 -0.251520 -0.397460 -0.095179 -0.589010 -0.237780 -0.047975 0.243840 0.079106 0.000892 -0.296670 -0.599360 0.488570 0.794880 -0.247690 -0.187920 -0.611780 0.164560 -0.289190 0.656450 -0.356530 0.179820 0.984300 0.313720 -0.865040 0.371460 0.001582 0.009560 -0.310200 -0.493390 -0.411790 0.407620 0.839950 -1.338400 0.395060 -1.865600 0.035020 0.515420 0.607070 -0.069902 -0.257240 0.413210 -0.177340 0.620090 -0.085999 0.376630
109  -0.528840 -0.707990 -0.575600 0.183010 -0.152240 -0.792830 -0.783310 0.109270 0.881350 -0.335060 -0.009523 0.270110 0.437720 -0.985790 0.380350 -0.935350 0.404960 -0.085473 0.081440 -0.513770 -0.436910 0.134460 0.276210 -0.112040 -0.111360 0.897610 -0.159820 -0.016447 -0.755310 -0.259050 0.215900 0.222090 0.821300 0.221290 -0.939310 0.235050 -0.197950 0.130320 0.062736 -0.542020 0.834280 -0.065961 0.893920 0.415720 -0.663500 1.075100 -0.902380 0.922940 -0.036926 0.817520 0.406600 -0.589500 -0.324910 -0.529730 0.726160 0.018784 0.338580 0.932420 0.259890 -1.001000 0.219390 0.490340 -0.673970 0.569740 0.214950 0.234050 -0.322250 -0.113760 0.687190 0.301520 0.345680 0.330720 -0.391010 0.632870 -0.531490 -0.562520 0.490080 1.071900 0.207700 0.959170 -0.560350 -0.760870 -0.199170 0.284760 0.144610 0.531470 -0.223750 -0.746720 -0.337590 -0.125090 -0.285070 0.513690 -0.235390 0.661990 0.472280 0.298050 -0.329850 -0.203410 0.454400 0.817680

試しにデータ型がintのneighborsを指定すると、エラーになります。

!./h5range glove-100-angular.hdf5 neighbors 100 10
Error: Data type is not float.

distancesを指定すると、処理に成功します。

!./h5range glove-100-angular.hdf5 distances 100 10
100  0.306692 0.380962 0.399842 0.410438 0.420184 0.420993 0.432931 0.439501 0.443484 0.445160 0.446063 0.448655 0.449283 0.449308 0.450248 0.453219 0.453476 0.454340 0.454754 0.456131 0.456311 0.457126 0.457430 0.457586 0.459304 0.460581 0.462469 0.463464 0.464061 0.464215 0.464557 0.465545 0.466001 0.466492 0.467570 0.468023 0.468330 0.468832 0.470620 0.471720 0.472298 0.473327 0.473410 0.473602 0.473650 0.473862 0.474963 0.475759 0.475927 0.476193 0.476778 0.476981 0.477009 0.477748 0.478030 0.478299 0.478519 0.478702 0.479348 0.480401 0.480420 0.481024 0.481745 0.482127 0.482160 0.482298 0.482526 0.482702 0.482898 0.482959 0.482972 0.483744 0.483950 0.484403 0.484597 0.485001 0.485084 0.485970 0.486643 0.486728 0.486829 0.486870 0.487044 0.487049 0.487250 0.487410 0.487629 0.487824 0.487997 0.488855 0.489101 0.489145 0.489178 0.489629 0.489894 0.490176 0.490995 0.491076 0.491184 0.491238
101  0.475775 0.483058 0.483985 0.488356 0.515395 0.523914 0.524276 0.525544 0.525619 0.527592 0.527865 0.531722 0.532266 0.533842 0.534106 0.534494 0.534710 0.535068 0.535227 0.535403 0.535968 0.539388 0.539521 0.540071 0.540137 0.540346 0.540606 0.540983 0.541128 0.541501 0.541594 0.543101 0.543244 0.544333 0.544676 0.547421 0.547740 0.548519 0.549057 0.550086 0.550891 0.550918 0.551350 0.552062 0.552167 0.552595 0.552921 0.552931 0.553002 0.553128 0.553579 0.553580 0.553632 0.553831 0.553906 0.554972 0.555016 0.555189 0.555757 0.556157 0.556637 0.556741 0.557800 0.558196 0.558407 0.558473 0.558889 0.558915 0.559152 0.559307 0.559328 0.559593 0.559913 0.560179 0.560191 0.560247 0.560631 0.560835 0.560936 0.562285 0.562387 0.562430 0.563122 0.563408 0.563417 0.563474 0.563697 0.564059 0.564139 0.564146 0.564514 0.564593 0.564667 0.564727 0.564962 0.565013 0.565359 0.565456 0.565866 0.566001
102  0.385728 0.400983 0.415554 0.427997 0.436546 0.438477 0.441108 0.443113 0.443529 0.444982 0.446680 0.447213 0.448154 0.450574 0.450580 0.452586 0.453520 0.454305 0.454607 0.458802 0.460905 0.462330 0.462559 0.464256 0.464571 0.465196 0.465545 0.466021 0.466094 0.466711 0.468317 0.468507 0.468647 0.469684 0.470379 0.471426 0.471779 0.472055 0.473018 0.473090 0.474332 0.474586 0.474803 0.476291 0.476357 0.476495 0.476506 0.476925 0.477115 0.478041 0.478673 0.479119 0.479500 0.479744 0.480130 0.481177 0.481182 0.481262 0.481568 0.482074 0.482504 0.482700 0.482987 0.483684 0.484006 0.484646 0.485080 0.485495 0.485640 0.485796 0.485948 0.486650 0.486975 0.487293 0.487372 0.487506 0.487538 0.487726 0.487750 0.488065 0.488082 0.488506 0.488925 0.489100 0.489255 0.489349 0.489889 0.489894 0.490113 0.490275 0.490345 0.490761 0.490907 0.491727 0.492575 0.492746 0.492874 0.492961 0.492973 0.493383
103  0.356750 0.363257 0.369629 0.370084 0.370727 0.371859 0.372722 0.373987 0.374144 0.374811 0.375848 0.383199 0.386283 0.386852 0.391451 0.392506 0.393017 0.393243 0.393602 0.393625 0.393785 0.393916 0.394118 0.394210 0.394431 0.396134 0.396834 0.397242 0.399417 0.400385 0.400993 0.401482 0.401704 0.402099 0.403193 0.404154 0.404794 0.405425 0.405676 0.406111 0.407203 0.408099 0.409558 0.410603 0.411008 0.411285 0.411555 0.411788 0.412130 0.412611 0.412878 0.413386 0.413612 0.414645 0.414811 0.414906 0.415818 0.416532 0.416644 0.416761 0.416954 0.417108 0.417368 0.417491 0.417580 0.418242 0.418546 0.418727 0.419243 0.419374 0.419390 0.419613 0.420351 0.420513 0.420666 0.420996 0.421411 0.421497 0.421724 0.422152 0.422188 0.422904 0.423351 0.423453 0.423696 0.423976 0.424088 0.424484 0.424506 0.424726 0.424946 0.425059 0.426352 0.426358 0.426959 0.426964 0.427425 0.427782 0.427824 0.428368
104  0.493989 0.495094 0.496214 0.501521 0.502341 0.503547 0.505571 0.507781 0.507944 0.509352 0.509905 0.510133 0.510683 0.511022 0.512300 0.512408 0.513213 0.513823 0.514521 0.515169 0.516970 0.517088 0.517323 0.517662 0.517919 0.518040 0.519932 0.520037 0.520771 0.521763 0.522048 0.523256 0.523301 0.524543 0.524634 0.524706 0.525410 0.525797 0.526500 0.526835 0.526909 0.527746 0.528261 0.528291 0.529202 0.529829 0.529898 0.530417 0.530445 0.531685 0.532289 0.533082 0.533407 0.533475 0.533534 0.533947 0.534070 0.534495 0.534554 0.534575 0.534599 0.534629 0.534814 0.535181 0.535362 0.535422 0.535678 0.536016 0.536065 0.536144 0.536257 0.536677 0.536809 0.536882 0.537407 0.537850 0.538113 0.538587 0.538605 0.538946 0.538998 0.539320 0.539708 0.539783 0.539843 0.540260 0.540291 0.540311 0.540742 0.541152 0.541329 0.541630 0.541935 0.542250 0.542255 0.542756 0.543294 0.543490 0.543542 0.543543
105  0.059655 0.225059 0.393270 0.394482 0.399347 0.400184 0.400759 0.411775 0.413712 0.415127 0.415517 0.415808 0.419091 0.419717 0.423852 0.424943 0.425077 0.425856 0.426388 0.427385 0.430384 0.430652 0.430788 0.430985 0.432038 0.433459 0.434254 0.436419 0.437108 0.437458 0.437732 0.437842 0.438019 0.438138 0.438815 0.438884 0.439130 0.439170 0.439258 0.440495 0.441922 0.442054 0.442313 0.443480 0.443699 0.444162 0.444923 0.445346 0.445978 0.446774 0.447412 0.448968 0.449313 0.449722 0.449930 0.449958 0.450085 0.450213 0.450215 0.451147 0.451252 0.451444 0.451517 0.451652 0.452439 0.454184 0.454758 0.454796 0.455256 0.455441 0.455609 0.455655 0.455707 0.455744 0.455882 0.456066 0.456187 0.456333 0.456856 0.456858 0.456965 0.457624 0.457898 0.458173 0.458263 0.458300 0.458777 0.458788 0.458795 0.459078 0.459190 0.459557 0.459931 0.459985 0.460061 0.460821 0.461370 0.461568 0.461637 0.461948
106  0.398196 0.403404 0.406747 0.408753 0.422984 0.425433 0.432938 0.444479 0.445255 0.445311 0.445448 0.448407 0.449570 0.450184 0.450780 0.455626 0.459999 0.460140 0.461693 0.463608 0.463813 0.465993 0.467729 0.468602 0.469560 0.471169 0.472867 0.474961 0.476268 0.478004 0.478163 0.484994 0.486224 0.486310 0.486364 0.486436 0.487942 0.487961 0.488001 0.489384 0.489589 0.490194 0.490895 0.491780 0.496472 0.496516 0.496628 0.496694 0.497012 0.497355 0.497721 0.498268 0.498498 0.498617 0.498790 0.499499 0.499502 0.500670 0.502026 0.503112 0.503606 0.504127 0.504222 0.504623 0.504635 0.505215 0.505267 0.505294 0.505357 0.506122 0.506175 0.506600 0.507007 0.507075 0.507375 0.507579 0.509480 0.509562 0.509690 0.509944 0.510216 0.510278 0.510481 0.510510 0.510739 0.511091 0.511433 0.511669 0.511771 0.512218 0.512721 0.512761 0.513174 0.513334 0.513479 0.513502 0.513704 0.513880 0.514139 0.514244
107  0.260315 0.272421 0.279670 0.326371 0.329210 0.330805 0.333230 0.340073 0.342184 0.343259 0.344205 0.345296 0.347813 0.351123 0.351356 0.354174 0.361450 0.361700 0.365837 0.365929 0.367705 0.367888 0.369286 0.369849 0.371256 0.371842 0.372543 0.374391 0.374487 0.374612 0.375569 0.376644 0.376912 0.377805 0.378203 0.378275 0.378488 0.380528 0.381257 0.382926 0.383315 0.383365 0.387100 0.387524 0.387899 0.387911 0.388158 0.388186 0.388966 0.389022 0.390219 0.390227 0.390415 0.391048 0.391221 0.391724 0.391909 0.392490 0.392822 0.393125 0.393611 0.393864 0.394030 0.394050 0.394398 0.394442 0.394844 0.395852 0.396299 0.396484 0.396668 0.397208 0.398463 0.400408 0.401141 0.402326 0.402337 0.402578 0.404015 0.404778 0.405085 0.405217 0.405217 0.405378 0.405525 0.405895 0.405971 0.406047 0.406646 0.406975 0.407214 0.407368 0.407683 0.407877 0.407960 0.408529 0.408587 0.408904 0.408979 0.409604
108  0.194440 0.214978 0.233690 0.234333 0.254817 0.261421 0.278243 0.278556 0.285316 0.289681 0.290050 0.292147 0.306280 0.307626 0.311265 0.315171 0.316352 0.317717 0.317804 0.319048 0.324618 0.325537 0.326381 0.335467 0.341606 0.346951 0.355007 0.355460 0.359216 0.360338 0.366196 0.370089 0.370713 0.373896 0.375631 0.393134 0.393213 0.397041 0.400106 0.404040 0.405288 0.405472 0.414028 0.417022 0.420004 0.420419 0.421620 0.422018 0.422941 0.422993 0.426463 0.427506 0.427689 0.427872 0.428768 0.431367 0.431792 0.431845 0.434444 0.435326 0.435670 0.436411 0.436550 0.438352 0.439936 0.440564 0.440749 0.440903 0.442177 0.442340 0.443327 0.443682 0.443744 0.444862 0.445120 0.445654 0.446121 0.446319 0.446901 0.447779 0.448934 0.448980 0.449060 0.449876 0.451381 0.451488 0.452513 0.452530 0.452750 0.453047 0.453370 0.453710 0.453937 0.454333 0.454801 0.455110 0.455242 0.455262 0.455429 0.455502
109  0.287755 0.320960 0.379436 0.386656 0.391477 0.391852 0.406674 0.410385 0.410636 0.411019 0.411089 0.411203 0.412924 0.413023 0.413267 0.413963 0.414104 0.414491 0.416043 0.416813 0.418371 0.418403 0.420243 0.420520 0.421116 0.421635 0.422401 0.422947 0.422997 0.423178 0.424832 0.424972 0.425246 0.427695 0.427947 0.428555 0.429097 0.429156 0.429811 0.429897 0.429931 0.430458 0.430599 0.430729 0.430996 0.431748 0.432022 0.432026 0.432341 0.432754 0.432873 0.432928 0.433086 0.433284 0.433525 0.433830 0.433879 0.434067 0.434504 0.434848 0.435137 0.435440 0.435736 0.435936 0.436907 0.437796 0.438688 0.438807 0.439640 0.439680 0.439909 0.440399 0.440437 0.440677 0.440819 0.440875 0.440884 0.441286 0.441313 0.441397 0.441562 0.441586 0.441606 0.441607 0.442047 0.442095 0.442284 0.442419 0.442693 0.442928 0.442931 0.443013 0.443432 0.443538 0.443677 0.443693 0.443824 0.444243 0.444345 0.444650

以上です。

About

License:MIT License


Languages

Language:Jupyter Notebook 100.0%