Python
例えばn_col = 5a = [1, 2, 3, 4, 5]という前提でb = np.zeros( (n_col, n_col))for j in range(n_col): b[j, j] = 1.0 / (a[j] ** 0.5) なにやってんの?a[j] ** 0.5 は a が(例によって)リストで,a[j] はint か float なのだろうから仕方ないが numpy.s…
っていうか,これ,Python のプログラムじゃないよね...って,話でも,まあ,書いてみよう 行きがかり上,A は 二次元配列ではなく,二重リストだ(何度でも言うが,なんでリストなんだ?)。n_col, n_row はまあ,わかる。 fc = []for j in range(n_col): s…
以下のようなデータを読むのに数十行費やしているプログラムがある。 ======= beginいろいろ注釈もあるんだろう/ row column 2 3c1 c2 c3r1 1 5 2r2 3 2 6======= end 行名や列名も取り出したいということなんだけど以下の 4 行で済むし,行数列数もデータフ…
a がリストなんだが(そもそもリストである必然性はないが),その合計を求めるのに a = [5, 5, 5, 2, 4, 1, 2, 4, 4, 3, 4, 2, 1, 1] t = 0for j in range(len(a)): t += a[j] print(t)t は 43 になるが,こんなものに 3 行もかける意義はない t = sum(a) …
一行で書くとこうなるか a, b, c, d = 1, 2, 3, 4 それぞれに 1 を足す import numpy as npa, b, c, d = np.array([a, b, c, d]) + 1
IPA フォントをインストールしたのにちゃんと使えないということだったが, ~/.matplotlib の中にある,2 つのファイルを削除する(いきなり削除するのが怖い人は,名前を変える) -rw-r--r-- 1 foo 503 104286 10 31 2017 fontList.cache0 これと-rw-r--r--…
>>> x = [1,2,3,4,5]>>> y = [3,2,1,5,4] >>> x*yTraceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: can't multiply sequence by non-int of type 'list' >>> x+y[1, 2, 3, 4, 5, 3, 2, 1, 5, 4] >>> x-yTraceback (most recent call last</module></stdin>…
Atom が自動更新した(そのような設定のままなのだが)。そうしたらまた,Hydrogen が動かなくなった。 今度も ipykernel_launcher がないと言っているけど,前に修正した kernel.json はそのままになっている。 調べたら,ipykernel 自体がなくなっている(…
ipykernel_launcher がないとか言っているが いろいろ調べたところ, /usr/local/share/jupyter/kernels/python3/kernel.json の3行目の "python", を "python3", にするのだそうだ。 こんなことも,ユーザがわざわざやらなくてはならないのか?
関数というのも汎用性のあるように定義するのが定道だとは思うのだが,Python の関数定義には首をかしげざるを得ないものも多い。 その一つとして,矩形を描画する関数の plt.broken_barh は,なんかおかしい。 矩形の (左下隅 x 座標,左下隅 y 座標,右上…
>>> import numpy as np>>> x = sp.array([1,3,7])>>> x -= 0.3Traceback (most recent call last): File "<stdin>", line 1, in <module>numpy.core._exceptions._UFuncOutputCastingError: Cannot cast ufunc 'subtract' output from dtype('float64') to dtype('int64') </module></stdin>…
前に書いた「 Fisher's exact test(Python) 」では諦めていたのだけど... Python で Fisher's exact test を行えるようにした話 まず,目的の FORTRAN プログラムソースをダウンロードするhttp://netlib.org/toms/ の中にある file: 643.gz"unordered rxc co…
import scipy as spx = sp.reshape(sp.arange(36), (6, 6))で作成される行列 x array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29], [30, 31, 32, 33, 34, 35]]) この行列…
「再度,matplotlib で日本語を使えるようにする Mojave 」を書いたばかりなのに,である。 Pweave で図を描こうとすると,とんでもないことになる(エラーメッセージがどっと出て,図なんて描かれない) 一番最後の〔原因の)エラーメッセージは, /usr/loc…
前に,「matplotlib で日本語を使えるようにする」を書いたが,その後,描いてみたら,日本語が使えなくなっていた。 その間に何をやったかというと,「Mac OS をバージョンアップして,macOS バージョン 10.14 Mojave にした」ことが原因か。 /usr/local/Ce…
以前にどこかにも書いたけど,$ pip install FisherExactで>>> from FisherExact import fisher_exact>>> fisher_exact([[1,3],[4,2]])はできるんだけど。2 x 2 より大きい分割表を指定すると segmentation fault で落ちる以下のようにすれば,R を呼んで,…
TeXShop で,Pweave.engine と Sweave.engine を使い分けていたけど,やはり面倒 自動的にいずれか適切な方を起動するというようにしたほうが何かと便利 Pnw という拡張子を認識しないと愚痴ったけど,むしろそれでよかった Sweave.engine の最初の方にちょ…
ディレクトリ A に __init__.py と B.py という Python プログラムファイルが あり,その中に C,D という関数が定義されている。 __init__.py があるディレクトリは,Python でいうところの「パッケージ」である。 ディレクトリ A __init__.py ファイル B.p…
まったく。 日本語(utf-8)が使えないのは,Pweave.engine で経験・解決済みだろ。 ということで,xtable 関数に原因があるわけではないので,それを呼び出す前に locale をセットする必要があるということ。 * 使用法: setlocale は,xtable の定義の後に実…
matplotlib で日本語を使えるようにするMac の場合,デフォルトで使える日本語フォントは AppleGothic である。まずは,これを使ってみる。matplotlib のさまざまな設定は,matplotlibrc ファイルに書いてある。このファイルで,使うフォント…
pweave のチャンクではまだ results=tex がサポートされていない,まあ何とかすることはできるだろうと思ってやってみた ただし,関数で *.tex ファイルを保存して \input{*} で読み込もうという手はず。 <<>>=def xtable(x, caption, label, fmt, align, po…
Qiita なんかで,数週間おきに,直線回帰についての記事が上がったりする。 いずれも sklearn だっけ?を使うか,あるいはそれこそ各変数の平均値を求める段階から自分でプログラムを書くかという両極端。後者は,そこまでやらなくてもという,前者はたかが…
ビュフォンの針のシミュレーションプログラムはたくさん書かれているが,プログラム内で定数 π を使っているものがほとんどである。 π を使わないシミュレーションプログラムを書いたので記録に残しておく。 方針は,原点を左下の頂点とする一辺 1 の正方形…
Python のプログラム規範にあるのかしらないけど,「変数名は実態を表すものにしなさい」とかあったとする。 じゃあ,それにしたがって, long_long2_long3_long4_long5 = 1 なんて書く馬鹿はいる?(いるみたいなんだなこれが) long_long2_long3_long4_lon…
Qiita では,これも定期的に出てくるやつ。長々しいプログラムが散見されるが,以下のように簡潔に書く。import numpy as npdef sim(n): xy = np.random.random( (n, 2))**2 print(np.mean(xy.sum(axis=1) < 1)*4)< 1 のところを <= 1 にしないといけないの…
ちゃんと理解していないとドツボにはまる(実際嵌まった) $> cat f1.pydef f1(): y = x*2 print("関数の中: x =", x)x = 10print("関数を呼ぶ前: x =", x)f1()print("関数を呼んだ後: x =", x)$> python3 f1.py関数を呼ぶ前: x = 10関数の中: x = 10関数を…