約 7,945 件
https://w.atwiki.jp/twstudy/pages/14.html
8.6 関数のプロパティとメソッド8.6.1 lengthプロパティ 8.6.2 prototypeプロパティ 8.6.3 自分専用の関数プロパティの定義 8.6.4 apply()メソッドとcall()メソッド 8.7 ユーティリティ関数 8.6 関数のプロパティとメソッド 関数は特殊なJavaScriptオブジェクト →関数もプロパティやメソッドを持つ。 typeofで調べると関数は「function」。 8.6.1 lengthプロパティ argument配列のlengthプロパティはその関数に実際に渡された引数の個数を示す。 これに対し、関数自身のlengthプロパティは関数の引数リストで宣言された引数の個数を示す。 関数のlengthプロパティは、関数の中でも外でも使用できる。 関数に渡された引数の個数が想定どおりの数かどうかチェックする時に使える。 function check(args){ var actual = args.length; var expected = args.callee.length; if( actual != expected ){ throw new Error("Wrong number of arguments"); } } function f(x, y, z){ check(arguments); return x + y + z; } 8.6.2 prototypeプロパティ どの関数にも、あらかじめ定義された プロトタイプオブジェクト を参照する prototypeプロパティ がある。 new演算子を伴うコンストラクタとして関数を使用する場合に、プロトタイプオブジェクトが使われる。 →prototypeプロパティについては9章で! 8.6.3 自分専用の関数プロパティの定義 呼び出された時に一意の識別値を返す関数(毎回異なる値を返す。) →過去の履歴を保持しておき、呼び出されたときにその履歴情報にアクセスする必要がある。 →これをグローバル変数に格納することもできるが、関数の内部でしか使わない場合、関数のプロパティに格納するのが最適。 例) uniqueInteger.counter = 0; function uniqueInteger(){ return uniqueInteger.counter++; } 8.6.4 apply()メソッドとcall()メソッド すべての関数に対してcall()メソッドとapply()メソッドが存在する。 これらのメソッドの最初の引数は、これから呼び出す関数の対象となるオブジェクトで、関数の本体のthisキーワードの値になる。 2番目以降の引数は、これから呼び出す関数に引数として渡される。 →あるオブジェクトのメソッドであるかのように関数を呼び出すことができる。 例)2つの引数を使用する関数f()を、オブジェクトobjのメソッドのように呼び出す f.call(obj, 1, 2); これは、次の記述とほぼ同じ意味になる。 o.m = f; o.m(1, 2); delete o.m; apply()メソッドも、call()と同じような働きをするが、関数に渡す引数を配列形式で指定する。 上の例をapply()を用いて行う場合、下記のようになる。 f.apply(obj, [1, 2]); 例)配列に格納されているようその中から最大の数値を見つけたい場合 var biggest = Math.max.apply(null, array_of_numbersf); 8.7 ユーティリティ関数 オブジェクトや配列、関数を操作するのに便利な関数 例)オブジェクトのユーティリティ関数 //調査可能なプロパティ名を配列に格納し、その配列を返す function getPropertyNames(obj){ var r = []; for( name in obj ) r.push(name); return r; } //fromからto(なければ、新規オブジェクト)に、調査可能なプロパティをコピーする。 function copyProperties(from, to){ if(!to) to = {}; for( p in from ) to[p] = from[p]; return to; } //上記と同様、プロパティをコピーするが、既にtoで定義されているプロパティは上書かない。 function copyUndefinedProperties(from, to){ for( p in from ){ if(!p in to) to[p] = from[p]; } } 例)配列用 //配列aryの各要素に対し、その要素を引数にして指定した関数を呼び出し、 //関数から返された値がtrueとなった要素のみを抜き出した配列を返す。 function filterArray(ary, predicate){ var results = []; var length = ary.length; for( var i=0; i length; i++ ){ var element = ary[i]; if(predicate(element)) results.push(element); } return results; } //配列aryの各要素を関数fncに引数として渡し、fncから //返される値を要素として格納する配列を返す。 function mapArray(ary, fnc){ var r = []; var length = ary.length; for(var i=0; i length; i++) r[i] = fnc(ary[i]); return r; } 例)関数用 //関数fncをオブジェクトobjのメソッドとして呼び出す関数を返す。 function bindMethod(obj, fnc){ return function(){ return fnc.apply(obj, arguments} } //呼び出し時に指定した引数の他に、あらかじめ指定した引数も含めて //fncを呼び出す関数を返す。 function bindArguments(fnc /*, あらかじめ指定する引数... */){ var boundArgs = arguments; return function(){ //引数の配列を作成する。 var args = []; for(var i=1; i boundArgs.length; i++) args.push(boundArgs[i]); for(var i=0; i arguments.length; i++) args.push(arguments[i]); //この引数を使って関数を呼び出す。 return fnc.apply(this, args); } }
https://w.atwiki.jp/pianissimo/pages/27.html
R memo C言語とC#とR 単数の変数を扱うのであれば、ほとんど同じと思われる。違いはC言語とC#は型にうるさいのに対して、Rは型のことは気にしなくても欲しい結果が得られることだろう。 ベクトル、行列、テーブルを扱うときに、話が変わってくる。C言語でやろうとすると、forループが必須である。C#では、forでもできるが、個数を意識しなくてよいforeachや、私は使いこなせないがLINQを使うことによって、あたかもブロック単位に演算しているようなコードが書ける。Rではもっと気楽に、単数とベクトルと行列を同じ書式で記述できてしまう。 たとえばn個の実数(double)からなるベクトルaの成分をすべて2倍したものをbに代入するには、 C言語 // 配列bはすでに確保されているものとして、、、 for (i=0; i n; i++){ b[i] = a[i] *2; } C# その1 var b = new double[a.Length]; for (inti i=0; i a.Length; i++){ b[i] = a[i] * 2; } //これは単に 配列長 n が必要なくなったというだけ。 その2 var b = from i in a select i * 2; //LINQを使った書き方。速度は遅くなるが、今後PLINQが使えるようになれば別かも。 その3 //ベクトルクラスにして演算子*をオーバーロードすれば、 var b=a*2; R b = a*2 # b - a*2のほうが推奨される書き方らしいが・・・ ベクトル以上のデータを扱うときは、Rのほうが短いコードで済んでしまうであろう。プログラミングにかかる時間もRのほうが短いであろう(慣れれば)。しかし問題は実行時間である。Rはインタープリター言語なので、実行速度が遅い。プログラミングにかかる時間と実行時間をよく天秤にかける必要がある。1度実行すれば目的が達せられるプログラムであれば、仮にRではコーディングに1時間、実行に24時間、C#ではコーディングに3時間、実行に10分だとしても、Rでコードする人が多いかもしれない。しかし、これを100回実行する必要がある場合(たとえば患者100人分の画像データを処理するとか)、Rでは計算だけで100日かかるが、C#では数日で終わる。 Rはインストールしたばかりの初期状態でも極めて高機能であるが、驚くべきは付加できるパッケージの膨大さである。生物学関係だけでも圧倒されるほどたくさんある(ref)。自分の目的に合ったものを選び出し、正しい方法で使用するのは、相当な苦労がいるに違いない。 画像のフィルターは、convolve関数のtype="filter"がポイント。 a=rnorm(100) #100個の正規乱数 b=c(1/5,1/5,1/5,1/5,1/5) c=convolve(a,b,type="filter") plot(a,ylim=c(-3,3)) par(new=T) plot(c,ylim=c(-3,3),pch=2) なお、aの長さは100だが、cの長さは96になっている。 convolve関数の中身は、convolve [enter] で表示されるのでわかりやすいが、 要点は、 1. 被フィルター配列の「前」に、フィルター配列数-1個のゼロを加える 2. フィルター配列の「後」に、ゼロを加えて、上記の「ゼロ+被フィルター配列」と同じ長さにする。 3. 被フィルター配列をfft、フィルター配列をConj(fft(XX)) して、両者をかけあわせる(普通に要素ごとのかけ算)。 4. その配列をfft(YY,inverse=T)する。 5. できた配列の前と後をトリムして、完成 plot関数の中で、ann=F,axes=F と書いたのに軸のラベルや数値が表示された! なぜだ? 調査の結果、Fという名前の変数に何かを代入してあったことが原因と判明した。 横着しないで、ann=FALSE, axes=FALSEと書くことで余計なバグフィックスの時間を節約できたはずだ。 次回から気をつけよう。 DOS窓のコマンドラインから、 R CMD BATCH test.r result.txt とすると、test.rを実行して、result.txtに出力してくれる。
https://w.atwiki.jp/isoroku_be/pages/141.html
情報 作者名:しらたま 引用元:なでしこプログラム掲示板「多重起動の防止」 勝手に改変 概要 タイトルにAを含むウィンドウ全てにCOPYDATA送信します。 完全一致の方は完全一致したウィンドウ全てに送信です。 解説 引数 A:(タイトルに含まれる)文字列 S:COPYDATA サンプルプログラム なし //本体 ●COPYDATAタイトル検索送信(AにSを) Bとは配列=ウィンドウ列挙。 Cとは配列=Bの2からAを表ピックアップ。 Cで反復、対象[0]にSをCOPYDATA送信。 戻る。 ●COPYDATAタイトル完全一致送信(AにSを) Bとは配列=ウィンドウ列挙。 Cとは配列=Bの2からAを表完全一致ピックアップ。 Cで反復、対象[0]にSをCOPYDATA送信。 戻る。 名前 コメント
https://w.atwiki.jp/memorandum_book/pages/55.html
double Close[] 現在のチャートの各足の終値を含む直列配列。 直列配列の要素は逆順でインデックス化されている。 つまり、最新値から最古値の順番である。配列の最新要素である現在の足のインデックスは0である。 現在のチャートでの最古の足はBars-1でインデックス化されている。
https://w.atwiki.jp/pajnote/pages/20.html
転写・翻訳・タンパク質 タンパク質の構造 まずこれをやらないと^^; タンパク質は、アミノ酸が鎖のようにつながった分子で、アミノ酸は20種類くらいある。 つまり、タンパク質はたくさん種類がある。 アミノ酸同士の結合を、ペプチド結合といい、アミノ酸が連なったものをペプチド鎖という。 タンパク質合成の過程 DNAの一部が解け、DNAの塩基に対するヌクレオチドがやってくる。 そしてRNAポリメラーゼでヌクレオチドが結合されていき、RNAができる。 ただ、このRNAはDNAがAならU、GならCというような塩基配列である。 この様な過程を、 転写 という。 また、これはDNAを移しただけなので、タンパク質合成にいらない部分(イントロン)がある。 これを、いる部分(エキソン)のみにする過程、つまりイントロンを切り捨ててしまう過程を、 スプライシング という。 スプライシングされたこのRNAは、mRNAである。 ちなみに、RNAは塩基3つセットで一個のアミノ酸を指定する。 この説をトリプレット説といい、この3つセットの配列をコドンという mRNAは、リボソーム(タンパク質合成の場、rRNAで出来ている。)に付着する。 UならA、GならCと、mRNAの塩基に対する塩基をもった、細胞質中にいるtRNA(こいつがアミノ酸を持っている)が結合してくる。 tRNAの3つセットの配列を、アンチコドンという。 tRNAによって運んでこられたアミノ酸どうしがペプチド結合して、タンパク質ができる。 このような、mRNAの塩基配列を、アミノ酸配列に読み替えることを、翻訳という。
https://w.atwiki.jp/kajuaru/pages/13.html
【所属】ラッコさん部隊、全日本イイネ!スト連合 旧名:松z 紹介文:タイパー辞典-カジュアルの製作者。 qwerty改造配列のCprp(しーぷろっぷ)配列を使う。 TWJR以外のタイピングゲームに苦手意識が強い。 さくタイピングを好んでプレイしている。 テトリス、ぷよぷよ、格ゲー好き。イイネ!マン 音ゲータイパー jubeat(jubegraph),弐寺,DDR 特徴:TWJR特化型タイパー 出現場所:twitter 使用配列:Cprp配列 使用キーボード:ピカチュウ BSKBU08BK 目立った記録:TW-殿堂groupρ 記録 【TW】 JR XX(ZJ/XA/XS/XS) 12/01/23 靴下イプウェル 常用R 37,128秒 【e-typing】 腕試し 518pt/元気が出る言葉 【打トレ】 さくさくタイピング 635打 35miss 【寿司打】 お手軽 3360円得 お勧め 6080円得 高級 8700円得 twitterID:@716cream 運指表
https://w.atwiki.jp/jfactory/pages/67.html
サンプルコード 自己再起動 空の配列 ビット演算 ファイル 自己再起動 If Not (0 = Shell(App.Path "\" App.EXEName)) Then End 空の配列 C#でいうところの、nullが入った状態のことである。 基本的にVB6では、空っぽの配列を作成することはできない。 しかし、偉大な先人達が、いくつかの方法を見つけている。 null?を入れておく方法 VB6にはnullなどないので、それに変わる方法を使う。 いちおうmsdnにも記載されているらしいが、かなり裏技っぽい Variant型の空の配列を作る Dim arr() As Variant arr = Array() 空っぽの判定 On Error Resume Next If (UBound(arr)) Then Debug.Print "配列は空っぽ" End If String型の空の配列を作る Dim StringArray() As String StringArray = Split("") Byte型の空の配列を作る Dim ByteArray() As Byte ByteArray = "" Object型の空の配列を作る Dim ObjectArray() As Object Call IsArray(ObjectArray) APIを使う方法 Private Declare Function SafeArrayAllocDescriptor Lib "oleaut32" ( _ ByVal cDims As Long, ByRef ppsaOut() As Any) As Long Private Declare Sub GetMem4 Lib "msvbvm60" ( _ ByVal ptr As Long, ByRef ret As Long) 「常に目的のサイズ+1とし、サイズが1を空とみなす方法」 自分的には、読みやすさも考えて、これが好ましいと考える。 Dim arr() As Integer ReDim arr(0) 空っぽの判定(本当は要素数1である) If (UBound(arr) = 0) Then ... End If 要素数を5に変更(本当は要素数6になる) ReDim arr(5) ループ処理(cntは0~4の値となる) Dim cnt As Integer For cnt = 0 To UBound(arr) - 1 ... Next cnt 末尾に要素を追加 ReDim Preserve arr(UBound(arr) + 1) arr(UBound(arr) - 1) = 0 ビット演算 指定位置のバイトを取り出す source 取り出し元 / destination 取り出したデータ Dim source as Long, destination as Long 最下位バイトを取り出す dest = src 0xff destination = source And HFF 2バイト目を取り出す dest = (src 8) 0xff destination = (source / H100) And HFF 3バイト目を取り出す dest = (src 16) 0xff destination = (source / H10000) And HFF 最下位バイトを取り出す dest = (src 24) 0xff destination = (source / H1000000) And HFF ファイル Dim fno as Integer, str As String fno = FreeFile Open "c \sample.txt" For Input As #fno Line Input #fno, str Close #fno
https://w.atwiki.jp/kohei-hasegawa/pages/84.html
4.numpyを使いこなそう Numpy はNumerical Pythonの略称であり,Pythonにおいて数的データ処理を行うことに特化したライブラリです.Python=Numpyと言っても過言ではないぐらいPythonの可能性を広げてくれる究極のライブラリの一つです.本書の主題もNumpyに置いています.ここでは,Numpyの概念からインストール,多用する関数,データの入出力,関数を活用した実務的なデータ処理といった内容までを一気に紹介します. 4-1.Numpyはなぜ早い? さて,Pythonを用いる上でしばしば批判されるのが実行速度です.確かに動的型付け言語なので,配列の各要素を参照する際に型の認定が必要となるため速度が遅くなるのは事実です.しかし,Python=遅いとするのはステレオタイプで不勉強な人の発言だと考えて下さい.Numpyを使えば他のプログラミング言語を凌駕する速度を得られる可能性すらあります.その理由は以下のとおりです. Numpyは元から配列の型(Int,float)が決まっている ブロードキャスティングによる配列内部の一括処理が可能 Numpyはその中身がコンパイル言語であるC(Cython)で書かれている 関数内部の記述も論理的で無駄がない 様々な計算がすでに関数化されているのでコードを書く時間も短くなる(c.f.車輪の大発明) 正しい手順で導入した場合計算環境が自分のPCに最適化される(例:Intel MKL) 等々,様々な理由があります.ここでは,(1)と(2)の説明を順次行います. (1)Numpyは元から配列の型(Int,float)が決まっている コンパイル言語との違いでPythonは動的型付け言語であると説明しました.動的な型付けとは,FortranやC言語のように変数にintやfloatなどの型付けが必要ないというものです.しかし,Python内部での実際の計算では各数値の型を判別した上で計算が行われています.ここが,Pythonが遅いと言われる所以です.何事も経験が一番なので以下のコードを実行してみましょう.私のPC環境では,Python-native codeの実行時間は7.8s,Numpy_codeの実行時間は1.9sでした.つまり,pythonだけで計算するのとNumpyを用いて計算するのとでは4倍の差があります.配列サイズが大きくなる程にこの差は大きくなります.侮ることなかれ,4倍は小さく見えますが,1回のシミュレーションに4日必要なプログラムが1日で終了できると考えれば非常に大きな改善です.ただし,配列のサイズが小さい場合はリストを用いたほうが速いケースもあります. Python-native code lstA = [5]*500000000lstB = [10]*500000000lstC = [] for i in range(len(lstA)) X = lstA[i] + lstB[i] lstC.append(X)print(lstC) [15,15,15・・・] 注意:メモリサイズの小さいPCではフリーズの原因になる.具体的にはサイズを5000にするなどの対応策がある. Numpy_code import numpy as npa = np.full(500000000,(5))b = np.full(500000000,(10))c = np.empty(500000000) for i in range(len(a)) c[i] = a[i] + b[i]print(c)print(a.dtype,b.dtype,c.dtype) [15. 15. 15. ... 15. 15. 15.] int32 int32 float64 np.full(shape, (fill_value)) 指定した fill_valueで満たされた大きさがShapeの配列を生成します. np.empty(shape) ランダムな値で満たされた大きさがShapeの配列を生成します. np.darray.dtype 指定したnp.darrayの型を返します.なお,darrayのdは次元数(Dimension)を表す. 先程のプログラムでは,長さの同じ配列lstAとlstBの要素を一つずつ足し合わせ,その結果であるlstCを作成するというものでした.今回の配列長は5億ですから,5億回足し算をしていることになります.その度にlstA[i]とlstB[i]の型を検索・同定する処理が行われます.ここに時間がかかっています. 一方,NumpyはNumpy codeの実行結果から分かるように,配列darray全体に対して型が決められています.これにより,a[i]とb[i]における型の検索・同定が不要になります.余計なプロセスが減った結果,同じ計算でも速度が早くなるのです.当然,(3)にあったC言語で実施されているということも速度が早い理由でもあります. (2)ブロードキャスティングによる配列内部の一括処理が可能 Pythonの有名な機能の一つはブロードキャスティング(Broadcasting)です.ブロードキャスティングは放送という意味がメインですが,広げるという意味もあります.放送というのも情報を拡散するという意味からの派生で生まれました.Python-nativeなリスト[1,2,3]を2倍すると,[1,2,3,1,2,3]となります.普通は[1,2,3]×2を行うと,[2,4,6]になるスカラー倍をイメージするのが普通ではないでしょうか?Numpyはこれが出来ます.スカラーベースなので[1,2,3]+2=[3,4,5]や[2,4,6]/2=[1,2,3]という計算が出来ます。 Broadcasting.py import numpy as npa = [1,2,3]b = np.full((5,3),(2))print(b)print(a+b) [[2 2 2] [2 2 2] [2 2 2] [2 2 2] [2 2 2]] [[3 4 5] [3 4 5] [3 4 5] [3 4 5] [3 4 5]] しかし,これはNumpyがスカラーを扱えるだけであって,ブロードキャスティングではありません.ブロードキャスティングは以下のように自動的にndarrayを拡張する機能です.Broadcasting.pyの5行目でa+bが行われています.しかし,サイズの異なる配列同士を加減する概念はスカラーにはありません.加減を行うには,配列のサイズを一致させ,行列として対応する部分の加減を行う必要があります.Numpyは自動でそれをしてくれています.ブロードキャスティングの概念は以下のように定式化出来ます. ブロードキャスティングは異なるサイズの配列の小さい方を大きい方に合わせるように拡大し,加減を可能にします.異なるサイズの配列同士の乗除も同様にブロードキャスティングが適用されます.以下にその例を定式化します.ここで出てくる記号はアダマール除算を意味します. 上記は割り算へ適用されるものですが,はアダマール積を意味します.これはPoint-wise calculattionとも呼ばれます.すなわち,2つの行列を比較して同じ位置にあるもの同士を乗除するものです. また内部計算は行列ではなく,要素ごとの積であるアダマール積が実行されます.配列の位置的に対応する部分が乗除されるので非常に感覚的な計算が出来ます. Numpyの行列計算は基本的にアダマール演算に従っていると考えましょう.内積をしたければnp.dot(a,b)で可能です.1行N列のベクトルであればnp.dot(a,b) = np.sum(a*b)となります. Numpy_code_2 import numpy as npa = np.full(500000000,(5))b = np.full(500000000,(10))c = np.empty(500000000) for i in range(len(a)) c[i] = a[i] + b[i]print(c) [15. 15. 15. ... 15. 15. 15.] Numpy_code_3 import numpy as npa = np.full(500000000,(5)) c = a + 10print(c) [15. 15. 15. ... 15. 15. 15.] Numpy_codeを少し書き換えたNumpy_code_2とNumpy_code_3を例にブロードキャスティングの有無を比較してみます.Numpy_code_2はNumpy_codeと同様に2.0sが必要でしたが,Numpy_code_3は僅か0.2sで終了しました.計算の内容自体はどちらも変わりませんが,速度は10倍です.従って,Python-nativeなコードと比較して40倍の改善になります.さらに,Numpy_code_3は変数の宣言も少なく,スカラーを活用してより感覚的に計算をプログラムできています. Numpy_code_3では,5億列の配列aに合わせて10がブロードキャストされ,a+10の行列計算が行われています.コンパイル言語では,C = A + Bが忠実に行えるようにAとBのサイズが一致するように予め変数を整えておく必要があります.また,A+Bの結果であるCもAとBのサイズに合うようにint C[500000000]のような宣言を予めしておく必要があります. では,なぜNumpy_code_3のようにブロードキャスティングを活用して書くと速度が早くなるかといえば,それは配列の拡大や計算結果である配列cの生成をNumpyの内部,つまりはC言語を通して行ってくれるからです.Numpy_code_2では,Numpyで生成した配列の要素を一つ一つ抜き出して計算を行い,最後に予め生成した同じサイズの配列に埋め込むという作業をすべてPython上で行っています.一方,Numpy_code_3では,事前の配列の作成は一つだけである上,計算にfor文が出ていません.しかし,しっかりと計算結果は出力されています.a+10という計算に必要な配列サイズの拡大から行列計算,計算結果の変数出力までをすべてNumpy上で行ってくれているのです.Numpy上で行っている足し算はNumpy_code_2のfor i in range(len(a)) c[i] = a[i] + b[i]と変わりありませんが,これがC言語で書かれているため同じ計算でも速度が向上します.つまり,同じ計算でもNumpyを通すことで速度が顕著に改善されるのです. まずはExcelができるようになろう]では,for文による計算は速度低下の原因になることを述べました.これは,Python上でfor文を使うような配列計算はNumpyによって書き換えられる可能性が高く,Numpyを通すことでfor文を使うことに変わりはなくとも,それがC言語で書かれているために計算速度が向上するためです.さらに,Numpyを活用することでスカラーの概念に沿ったより感覚的な記述やより少ない変数宣言が可能になり,コード記述速度の改善や可読性の向上にもなります. コラム5.Ipythonによる実行速度の比較 コマンドプロンプトでpythonを入力すると簡易版pythonが出てくることは学びました.この簡易版pythonをインタラクティブモード呼びます.これを強化したものとしてIpython(Jupyter Notebook)があります.Anacondaなどでパッケージインストールした人はすでにIpythonが導入されているかと思いますが,導入されていない人はpip install ipythonでインストールしておきます.Ipythonは便利な機能が沢山ありますが,今回はその一つである時間計測機能を活用してNumpyの関数実行速度を比較します.Ipythonによるインタラクティブモードを使用するには,コマンドプロンプト上でipythonを入力し,実行します.すると,In [1] が表示されるはずです.これが出ていれば成功です. ここからはIpythonを使って関数の実行速度を比較していきます.比較するのはnp.zeros,np.ones,np.full,np.empty,Python-nativeなリストの5種類です.Ipythonで関数の実行速度を測るには関数の前に%timeitを付与するだけです.これはIpythonのマジックコマンドと呼ばれるものの一つです.例えば,np.zerosの実行速度を測る場合,import numpy as npをIn [1]で実行した上で,In [2]にて %timeit np.zeros(1000)を実行します.すると,次の行に複数回実行した時に得られる平均実行速度±標準偏差が出力されます. 3.38 µs ± 1.19 µs per loop (mean ± std. dev. of 7 runs, 100000 loops each) これを同様にnp.ones,np.full,np.emptyについても行います.私のPCにおける計測結果は以下の通りとなりました. np.zeros(1000)3.38 µs ± 1.19 µs np.ones(1000)9.91 µs ± 2.17 µs np.full(1000,(5))8.84 µs ± 2.14µs np.empty(1000)2.03 µs ± 277 ns [5]*10006.16 µs ± 1.87 µs ということで,結果は np.empty np.zeros Python-native list np.ful l np.ones となり,np.emptyの高速さが際立つ結果となりました.あるサイズの配列を作る際,pythonはPCのメモリースペースをはじめに確保します.その後,用途に合わせて配列の中身の数値を設定していきます.zerosであれば,そのメモリースペースをすべてゼロに.fullであれば,すべてを指定した数値に変換します.np.emptyはメモリースペースを確保しておしまいです.確保したメモリースペースにおける数値はその時々によって変化します.Ipythonでprint(np.empty(5))の実行結果を見てみましょう. [4.47685025e-290 4.47802457e-290 4.47661539e-290 4.47739827e-290 4.47747656e-290] print(np.empty(10))はどうでしょうか. [4.00276266e-289 1.77922788e-290 4.70809539e-292 4.05614237e-307 4.05646827e-307 4.05679421e-307 4.31378456e-289 4.29502680e-289 4.30041301e-289 4.35994307e-289] このようにランダム数値が並んでいることが分かるかと思います.しかし,このように確保した配列がNumpy codeのように別の計算結果に書き換えられるのであれば,確保した時の数値は関係がありません.このようなケースではnp.emptyによって配列を確保することがより合理的と言えるでしょう. この便利な%timeitマジックは関数だけでなく%%timeitとすることでforループ内の速度計測にも使用できます. 次へ
https://w.atwiki.jp/echizen/pages/681.html
太元API 仕様 http //maki.wanwan-empire.net/taigen/compile へのHTTP POST として行う。 POST時の引数は以下の通り。source 太元書式。文字コードはUTF-8であること。 revision: 省略可能。使用するL:定義のリビジョン。文字列で’17 を与えた場合、T17編成フェイズ締め切り時点のL:定義でコンパイルする。省略した場合、最新のリビジョンが使用される。 #普通は省略で使ってください。(後から編成チェックで利用する等の用途を想定しています) format: 出力形式。値は次の2種類"text" : plain textで出力。太元の評価まとめ欄と同じ形式。 "js" :JSONで出力。出力形式は以下の通り。 { divisions [ #配列。分隊毎に繰り返す。分隊がない場合は本隊分のみ { name division_name , #部隊・分隊名。”本隊” ないし定義された分隊名 evaluations [ #2次元配列。[ ”(評価名)" , (評価)] の繰り返し [ 筋力 , n] , [ 体格 , n] , [ 耐久 , n ] ... ] members [ #所属するユニット名。現在はユニット名のみ。(将来は保有する特殊一覧なども出力する予定) { name character name , #ユニット名 specialties [ ... ] } ] } ] #divisions 終端 ’not found [ idress1 , idress2 , ... ] #配列。太元に登録されていないL:名の列挙。なければ空配列。 warnings [ msg1 , msg2 ... ] #配列。太元が出力する警告・ヒントの文字列。なけれあば空配列。 } #大雑把な説明ですみません。詳細は黒埼までお問い合わせください。
https://w.atwiki.jp/nakamura001/pages/50.html
タイトル 内容 座標系について 直交座標、右手系、左手系の説明。 法線、面の向きについて 法線、面の向きのルール説明。 (Mac)三角形の描画 MacでOpenGLを使って三角形を描画する。glBegin()~glEnd() (Mac・iPhone)頂点配列を使った三角形の描画 頂点配列を使った三角形の描画。glVertexPointer()、glEnableClientState()、glDrawArrays()。 (Mac・iPhone)頂点配列を使った色付き三角形の描画 頂点配列を使った色付き三角形の描画。glColorPointer() (Mac・iPhone)glArrayElement() と glDrawElements() について glArrayElement() と glDrawElements() の使い方の解説。 (Mac・iPhone)プリミティブについて 各種プレリミティブについての解説。 (iPhone)テクスチャを使う テクスチャの使い方の解説。サンプルは glArrayElement() と glDrawElements() 用が準備してあります。 [OpenGL、3Dプログラムにおすすめの書籍]