ゆっくりのんびり。

いの (@inox_ee) です

【Python】csvやtxt形式でのデータの取り込み

csv形式やtxt形式で外部ファイルに保存されたデータをPython上で取り込みたいとき、みなさんはどうしているだろうか。
一般に方法は3~4通りあり、

  • csvモジュールを使う
  • numpyを使う
  • pandasを使う

に大別されるであろう。普段私は速度重視でnumpyを好んで使っているので以下のようなコードで取り込みを行っている。

import numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt('./hogehoge.txt', delimiter = '\t', skiprows = hoge)
plt.plot(data[0,:], data[1,:])
plt.show()

至って基本的である。その他の方法も各々メリットデメリットがあるのだが、一つ困った点が…
それはどれも決められた単一の区切り文字でしか処理できない点にある。
データの抜けがある場合はgenfromtxtで対応できるのだが、これは未だに対応策が思いついていない。

リニアテクノロジー社が提供する回路シミュレータであるLTSpiceは機能こそ充実しているものの、出力の形式が独特で悩ましい。
(出力電圧、位相)をカンマ区切りで出力すればいいものを、"frecency(Hz) \t ( voltage(dB)dB, phase(degree) --)" としてくるものだから困ったものである。
おそらく力技で攻めるなら read() とsplit() を駆使する方法であろう。しかしそれではとても面倒…
現状ではExcelで成形することで対応しているが、良い方法があったら教えていただきたい。

5/9~13

またも実験レポートの波に飲まれて忙しい…

とりあえず最近の進捗。

 

1. JavaScriptフレームワーク入門」(掌田津那乃,秀和システム)

TypeScriptの章を読破。TSはJavaScript特有の過剰(?)キャスト機能やオブジェクト指向を修正している。固有の文法も受容しやすいものばかりであるのでJSの代わりに積極的に使っていきたい。

Vue.jsの章を読み始めた。NodeやBackboneも読みたいしこの本は購入してしまおうか悩む。

 

2.実験

レポート現在作成中。pn接合、JFET、ソース接地増幅回路を学習した。

静特性のプロットはおおよそ理論通り…と思ったが正直大学のデジタルテスタ(やその他素子の性能)では逆バイアス時の電流は測定できないし、JFETを流れるドレイン電流のV_DS^2に対する係数も分からなかったので理論曲線というよりただのfittingにとどまってしまったのが残念。まぁ一応ソース接地増幅回路ではチャネル長変調効果も確認できたし御の字では。ところどころ理解していないところもある(小信号等価回路で負荷抵抗に並列して発生する浮遊容量とか)あるけど…

5/8

今日はMDNではなく「JavaScriptフレームワーク入門」(掌田津那乃,秀和システム)を読む。図書館で借りていたことを忘れていた。

 

進捗

1.jQueryの章を読破。JavaScriptをいかに短く書くかにこだわったライブラリのよう。一昔前にjQueryからJavaScriptに慣れろ、と言われていたのがよく分かる。

2.TypeScriptの序章を読む。JavaScriptの欠点を補う、とうたっているが未だ型宣言のことしか出てこない。というか「動的型付け」と言えどJSってキャスト機能強すぎでは…

 

疑問

1.Ajax通信、非同期通信のことはよく分からず。

2.TypeScriptをつかってみたいのにnpmからコンパイラをインストールする必要があるらしい。npmの章を先に読むべきか…

 

その他

1.「UniteTokyo2018」なるものが開催されているらしい。Unityにも触れてみたいんだよなぁと思ったり。Unityを使えるようになる分にはC#の学習効率は高いらしいのでいつか勉強したい。

5/7

今日は課題に余裕があるのでMDN(以下参照)でJavaScriptの勉強。

developer.mozilla.org

 

進捗

1.リテラル:値の表現を端的に文字化したもの。データ型のうち、「真偽値」「数値」「文字列」「配列(リスト)」「正規表現」など各々に存在。

     「真偽値」→true/false

     「数値」 →整数、浮動小数、…

     「文字列」→” ”で囲まれたモノ。シングル・ダブルの区別はない

     「リスト」→[hoge, hoge, hoge, ...]と表される。Arrayオブジェクトである。

     「オブジェクト」→後述

2.オブジェクト:名前のついた箱のようなもの。値、プロパティ(性質)を格納する。

      const object = {};       //objectという名前の空の箱(オブジェクト)ができた。

      const object = {property1 : value, property2 : value, ....} とすると

      object.propertyn でpropertynに格納されている値が出てくる。

     オブジェクトをさらに入れ子状にすることもでき、プロパティ名は数値でも文字列でもよい。

 

非進捗

1.「関数」と「関数式」の使い分け

     function foo() {

          console.log('Hello');
     }

     と
     var foo = function() {

          console.log('Hello')
     }

     の違いがよく分からない(特に後者)。まぁC言語勉強してた時も「関数のポインタ」の理解がイマイチだったしプログラムにおける「関数」の概念が苦手なのかも。

2.プリミティブな真偽値としてのtrue/falseと、Booleanオブジェクトとしてのtrue/falseの違い

     プリミティブな真偽値は性質というか、データ型の基本。

     一方Booleanオブジェクトは→?

 

制御フロー文まで進もうと思ってたのに眠くなったので終わり。

【ひとりごと】久々の更新

HTMLとCSSを勉強して部活の新サイトを1から書き上げて遊んでいたら、気付けば春休みも終わり、新学期突入。

 

しかも弊大学工学部のなかでもかなりブラックで有名な学科なので、4月すらあっという間にすぎてしまった…

 

今日から授業で学んだことも含め、積極的に記事を更新していきたい

【JavaScript】JSはなにを勉強したらいいのか

こんにちは

 

今日はただの独り言。

HTML5とCSS3を1週間ほど勉強したら大体のことは理解できるようになったので、次に動的処理すなわちJavaScriptに手を出そうと思った。

まぁごく自然な流れでしょう。

だけどこのJSをどう勉強するかで手が止まってしまった。

もともとはjQueryを通してJavaScriptを学ぼうと考えていたわけだが、どうもいろんなサイト(Qiitaとか)を漁ってみるとすでに時代遅れ感が否めない。2006年に登場し、界隈を席巻したjQueryが過去のものになろうとしているなんて、なんとも移り変わりの激しい世界である。

フロントエンドエンジニアになろうと決めているわけでなく、むしろ趣味でWebサイトを作れるようになろうというくらいの心持ちでやり始めたため多少遅れてても構わないのだが、なるべく時代に合ったものを習得しておきたいのは至極当然である。

 

なにやろうかな…

【CSS】text-alignがうまく効かない

CSSで文章の配置を決めるプロパティであるtext-alignですが、ちゃんと理解してないと機能してくれないことも多い。

 

最初の事例。

 

<p class="test-left">
 文章①
 <p class="test-center">
  文章②
 </p>

 文章③
</p>

文章①~③はまとめて一つの枠囲みにしたく、そのうえで文章②だけを中央配置にしたかったのだが、上記コードで.test-centerを動かすことは出来なかった。class="test-center"をp→spanにしても動かず。

 

<p class="test-left">
 文章①
 <div class="test-center">
  文章②
 </div>

 文章③
</p>

中央寄りにしたいところをdivにしてみたが、今度は枠囲みが①のみになってしまったので✕。

 

<div class="test-left">
 文章①
 <p class="test-center">
  文章②
 </p>

 文章③
</div>

最終的にこれで解決。

どうやらセレクタが持つ「インライン要素」と「ブロック要素」という性質が大きく関わっているよう。

文字や画像 などのインライン要素を左寄せ・中央寄せ・右寄せするときは、インライン要素を囲んでいるdivpliなどのブロック要素にtext-alignを指定します。

引用元:

インライン要素を左寄せ・中央寄せ・右寄せする方法 - CSSテクニック - acky.info

ということなのでこのプロパティは「インライン要素を囲んでいるブロック要素」に適用するようにしよう。

 

※追記( 03/04 )

  HTML5以降では「ブロック要素」「インライン要素」という言い方は廃止されたようですね…