夜のPython - 最初の夜 - 神話のファンのために
暗い嵐の夜カ月ぶりの高値で、私は静かに、エディタを開き、世界でプログラムを入力してください。私はちょうど、私が自信を持って次に、読み、再読......これは非常に良い手順ではありませんプログラムを最適化するために委託された、過度の負荷期間にはPython、およびBを学びましたか?しかし、彼らが考えることは適切ではないが、残念ながら、夜Maoxiongに行かなければなりませんでした。
「夜Maoxiong速度が保存 - !!」私は新年の花火のような雰囲気をノックアウトドアをノック。ナイトMaoxiongはちょうど私のプログラムは、シュシュをアップしました、と私シュシュ、軽蔑の表情:「これは......あなたが書くのか?」
「これは...... ......実際には、元のβの兄である」私は悪い感じ......
「本当に悪い!」ナイトMaoxiongはこれら二つの言葉を述べました。
「何何何?」私の顔の上に疑問符。、干物の10袋、ホットミルクの3杯、そして最後の夜はMaoxiong満足をトリビュート私はPythonが騙し教えることに合意しました。個人的に始めるために夜Maoxiongは、再びコードを最適化するために私を取ります。
位置の多くの最適化、ビューのセクション。
1 TESTDATAの=のnp.zeros((1、80、30)) ### 1 80 36 2 のために私に:範囲(80) ##80 3 のための J における範囲(30 ): 4 TESTDATA [0、I、J ] = mの[I、J]
以下Cと類似している上記の手順となるように、これは、mは、データの分類のための80×30のアレイ、テストデータであり、寸法を大きくする必要があり、NPはnumpyのライブラリである配列を初期化するためにC言語プログラムの断片を見ることができます言語コード:
1 int型 TESTDATA [ 1 ] [ 80 ] [ 30 ] = { 0 }。 2 int型I、J。 3 用(i = 0 ; iが< 80 ; iが++ ){ 4 用(J = 0 ; J < 30 ; J ++ ){ 5 TESTDATA [ 0 ] [I] [J] = M [i]は[J]。 6 } 7 }
「夜Maoxiongは、問題はありますか?C言語ではない、それというの書き換え?」
「Pythonの強みは、その構文は非常に単純であり、それは非常に効率的な開発であるので、それはおかしいC Pythonの模倣を使用して開発されています。私は、コードを書き換えるためにあなたに見えます。」
私はQiaowanキーボードで、夜Maoxiong爪を反応させることができる前に......私は、何がどのようなものを見ましたか?それはそれですか?
1 TESTDATA = m.reshape((1、80、30))
配列の形状を変更する形状変更がnumpyの独自の方法で、あなたは再整理することができ、データ、人気のポイントは、C言語の基礎となる.numpyある」、それは速いのためのPythonでよりも高速で、コードはシンプルで読みやすいので、書き込みコメントを追加しないでください。」
「右、右、右、強大な夜Maoxiong!」
マルチ言う、関数はその順序は、他のパラメータを使用することができる再形成に留意されたい。デフォルトの順序= 『C』、即ち、上記効果、順序は= 『F』データ列の順に配置される」、「ありますA」は、具体的に見るために公文書を。どのように示しています。」
1 >>> A = np.arange(12 ) 2 >>> a.reshape((4,3 )) 3アレイ([0、1、2 ]、 4 [3、4、5 ]、 5 [6 、7、8 ]、 6 [9、10、11 ]) 7 >>> a.reshape((4,3)、オーダー= ' C ' ) 8アレイ([0、1、2 ]、 9 [ 3、4、5 ]、 10 [6、7、8 ]、 11 [9、10、11 ]) 12 >>> a.reshape((4,3)、オーダー= ' F ' ) 13アレイ([0、4、8 ]、 14 [1、5、9 ]、 15 [2、6、10 ]、 16 [3、7、11]])
「うわー、私が学んだ学んだ。」私は微笑んで、彼の手をこすり「ああ、その期間を、次のことを......」
「はい、のような」Nianqi夜Maoxiong干し魚、牛乳の一口で吸う、次のコードから変更:
1 TDATAのnp.zeros =((47 ,. 4 )) 2 ... 3。データtctimeClient.recv =(47 * 4 4。) #1 40msの4バイト。 4。 PTR = 0 5。 ための I における範囲(47 * 4 ): 6 TDATA [47%PTR] [PTR @ 47] = struct.unpack(' F 'は、Data [I * 4:* Iは、+ 4 4])[0] #/浮動小数点加算、//割り切れる 。7 PTR + = 1
このコードデータは、データ・タイプは、のfloat32に変換する必要があり、バイトデータを受信すると、C言語キャストに類似する構造体データ型を変更する必要があります。もちろん、私のようにスマート - 夜MaoxiongマスターC言語では、変換の種類を達成するために労働組合(組合)を使用します。靴は、C言語、TDATA [PTR%47]によって理解されるであろう[PTR // 47]列の順に配置されたデータです。夜Maoxiongは、このようなアプローチはPythonで非常に非効率的である、と述べたとしてしかし、それは既製のライブラリに置き換える必要があります。そしてstruct.unpackマルチバイト操作で、オフ時間データは、完全な変換に47×4番目「F」を使用すべきです。
1 byte_data = tctimeClient.recv(47 * 4 * 4) #40msの4字节 2 float_data = struct.unpack(' F ' * 4 47 、byte_data) 3 TDATA = np.array(float_data).reshape((47、 4)、オーダー= ' F ')
「夜Maoxiong、白〜構造体について話をします」
「自身がで押収!」ナイトMaoxiongは、コードを変更するだけ求めて、私に話をしたくない、私は、「これは......干物の缶を引き出していた公式文書が自身次回ああを見つけ、。」
......
......ミルクカップの夜Maoxiong爪は、停止......時間が徐々に底入れハエ「すべての今日のために、と私は、コードはゆっくりとそれを変更昼寝をしたいと思います。」
「ハ?あなただけの干物や牛乳にしたいですか?」
「あなたが行く、黙れ!」夜Maoxiong乾燥魚の残りをした、私に瓶を投げ、「ああ、離れて撮影されているどのようなゴミ!」
夜のPython、最初の夜、2019年10月16日。