APL/J言語:$.(ドルドット、スパース)

APL/J言語:$.(ドルドット、スパース)

$.yは密配列を疎配列(スパースアレイ)にする。逆に$.^:_1 yは疎配列を密配列にする。

任意の関数fについて同一性の式f -: f&.$.とf -: f&.($.^:_1)が成立する。例外としては{.(左波かっこドット、左ブレイスドット、オーバーテイク)のようにフィルと

して疎配列を使う関数などが考えられる。

0$.yは状況に応じて$.もしくは$.^:_1として作用する。つまり、yが密配列ならば疎配列に、疎配列ならば密配列に変換する。

1$.sh;a;eは疎配列を返す。shでシェイプを指定する。aは疎配列の軸を指定し、負の表現も可能である。eはゼロ要素を指定し、そのタイプが配列のタイプを決める。引数が

sh;a(eを省略)の場合、eはデフォルトで浮動少数のゼロとみなされる。shのみ(aとeを省略)の場合、aはi.#shとみなされ、すべての軸が疎配列となる。eは浮動少数のゼ

ロである。

2$.yは疎配列を返す。(aの部分)
(2;a)$.y (re-)は疎配列の軸を指定する。
(2 1;a)$.yは(2;a)$.yに必要なバイト数を返す。
(2 2;a)$.y指定された軸a(つまり#4$.(2;a)$.y)におけるiの部分の要素数を返す。

3$.yは疎配列の要素を返す。(eの部分);
(3;e)$.yは疎配列の要素を再指定する。

4$.yはインデックスマトリックスを返す。(iの部分)

5$.yはバリュー配列を返す。(xの部分)

7$.yはy配列における非疎の要素の数を返す。すなわち#4$.y or #5$.yである。

8$.yはインデックスマトリックスから完全にゼロであるセルと対応する行を取り去る。

n&$.の逆関数は(-n)&$.である。