夢に向かって、好奇心を持ち、疑問を持ち続ける。それが努力。

趣味でロボット職人を目指す自称AI研究者のメモです。

viのcommentが黒地に青色で見えずらい

viのcommentがいつも見えずらいなぁと思っていて我慢ができなくなったので(笑)
ようやく色を変更してみることにした.

highlightというhiコマンドがある.これを使ってコメントの色を変更する.

設定方法は以下.

:hi Comment ctermfg=DarkGreen


参考にさせて頂いたページは以下.設定可能な色も記載があるのでありがたい.
goo.gl/R1gkY8

Python: Defの中にDef

恥ずかしながら,初めて知りました..

Pythonで関数定義defの中にdefを書けるんですね.


確かに,普通かもしれないけど…

defの中でしか使わない関数なら,その中で定義した方が,
構造体は(見た目で)わかりやすいかもですね.

以下サンプルコードです.

def functionA():

a = []

def functionB(x):
b = x * x
return b

X = [5, 3, 13]
for x in X:
value = functionB(x)

a.append(value)

return a

以上です.

Matlab:配列の作り方

Matlabで配列や行列をこんな簡単に扱えるの?と思うこと多々有ります.

今日は,配列の作り方の基礎+α編です.

初期配列は以下.
> a=[]

サイズを指定しなくても作れることを以下の記事で紹介しました.
Matlab:配列を作ってデータを順次格納する - 夢に向かって、好奇心を持ち、疑問を持ち続ける。それが努力。


xを,a以上b以下であり,aからsずつ増加したときの,数字の集合であるとき,
それをx=aから順に整列した数字の配列Xを,以下のように生成できる.

>> X=a:s:b


従って,X生成時に具体的な数字を当てはめて実行すると以下のような結果になる.

>> X=1:3:10

X =

1 4 7 10

>> X=1:3:11

X =

1 4 7 10


尚,s=1のときは省略できる.

>> X=1:5

X =

1 2 3 4 5

また,サイズは,

>>size(X)

で確認できるが,行列としてsizeを出力するため,左が行数,右が行の長さであることに注意する.

ans =

1 5


基本ではあるが,他言語からMatlabに入るときに苦戦する部分でもあるので,参考に記載しておく.

以上.

Matlab:配列を作ってデータを順次格納する

実はMatlabPythonみたいにできるんです.
しかも,サイズを予め指定してなくても(!)というのがすごいところ.

> a = []
> a(1) = 6
> a(2) = 4
> a

a = [6, 4]

上記の場合には,配列なのでデータに数字しか入らないけど,
以下のようにすればオブジェクトを格納できる.

> b = {}
> b{1} = object1
> b{2} = object2

上記の場合に,参照するときのカッコの形がかわらないのが少し違和感ありますが,
順次入ってくるデータを扱う時には便利なのでメモメモ.

Python:csvファイルの入出力

カンマ","で区切られたテキストファイルを読み込むとき,
中身が数字列だとnumpyも使えますが,少し遅いので,
csvreader,csvwriterが便利です.

1.読み込むとき

import csv

file = open(filepath_str, 'r') # codecsで文字コード指定読み込みも可
csvdata = csv.reader(file)
for row in csvdata:
print row
file.close()


2.書き込むとき

import csv

file = open(filepath_str, 'r') # codecsで文字コード指定読み込みも可

transdata = []
for row in csvdata:
transdata.append(row)

writer = csv.writer(file,lineterminator='\n')
writer.writerows(transdata)

# writer.writerow(row)とすれば1行ずつ出力可能


その他にも,numpy,pandasを使う方法がありますが,
今回はここまで.

Python:改行なしで文字列標準出力

久しぶりですが,最近コード書きに集中してるのですが,良く忘れるのでコーディングのメモを書いておきます.

for文の中がどれくらい進んでるかゲージで表したい時,
以下のように,stdoutを使うと便利です.

import sys
for data in dataset:
sys.stdout.write(".")

print文を使うと,改行されてしまうので,データ量が多いときには,
上記が便利です.

但し,標準出力されるまでにリアルタイムでない(キャッシュがたまったらFLUSHされるような感じ)ので,リアルタイムに…というと難しいですが.

質疑応答の難しさと心構え

今日は,『聞かれた問いにいかに答えるか.』について難しさに直面したので久しぶりに更新です.

プレゼンするにしろ,日常生活を楽しむにしろ,会話の中で,”〜ですか?”という疑問と,”〜ですよ”という回答がしばしば行われます.

日常会話の中であれば,多少の質問に対する回答が違っていたとしても,特別知りたい情報でない限りは,”まぁいいか”で済むかもしれません.

しかし,自分が欲しいものや,自分に関わること,であれば真剣になるのは当然です.

例えば,

自分の欲しい物であれば,より詳細な情報を知りたいので,知りたい情報がわかるまで,調べたり,人に聞いたり,お店の人に聞いたりするでしょう

また,自分が関わる仕事であれば,自分が何をすべきなのか,わかるまで情報を聞き出そうとするでしょう

更に,自分が判断しなければならない立場であれば,判断できるたけの情報を獲得できるまで,情報を引き出そうとするでしょう



自分に関わることでは,わかるまで質問し,的を得ない回答が返って来る場合には,あまり良い気分はしないと思います.


一方で,質問された側を考えてみると・・・

よく,クローズドクエッションと言われるようなシンプルな質問では,Yes/No/Otherを答えれば良いため,非常に明確に答えることができます.

更に,互いの認識に合致することが多いと思います.


しかし,なんで?などのオープンクエッションでは,複数の回答が考えられ,明確な答えを回答者自身が持っていない限りは,難しい状況であることもあります.



今回は,このオープンクエッションについて,答え方の難しさだけでない難しさをうむ性質があることに気づいたので,共有します.


今回感じたのは,

『オープンクエッションが時に互いの質疑の認識を曖昧にする性質がある』

ということ.


例えば,こんなときがあります.


質問者としては,知りたい情報は,Aを探ることでわかるだろうと思っている.

回答者は,Aのシンプルな理由Bを回答する.

質問者の知りたい情報が得られなかったので,更にCを質問する.

回答者は,Cのシンプルな理由Dを回答する.

・・・


質問者は継続して質問を続け,回答者も....


・・・

そこで,

別の者が出てきて,質問に関係なく全体を説明したところ,質問者は納得.


回答者(『知りたい質問はそこだったのか.』...)



こうした状況に直面したのは,初めてではないかもしれませんが,意識したのは初めてでした.



質問者も回答者も,自分が思った通りに質問・回答をしていることは,悪くありません.

しかしながら,本当に得たい情報がその質問から得られるかどうかは,わからないのです.

オープンクエッションゆえに,”これを聞けばその回答が得られるはずだ”という認識と実際の回答にはずれが生じる可能性があるとわかりました.



こうした経験を通して,質疑応答に対する心構えが必要であるという良い学びを得ることができました.



【経験を通して得た自身で気をつけるべきこと】

自身が質問者となるとき:

”自分の最も知りたい情報は何か”を理解した上で,その情報を得られるストレートな質問をするように心がける


自分が回答者となるとき:

シンプルに回答するだけでなく,”相手の質問から本当に得たい情報は何か?”を探り,相手の表情を見つつ,回答の意図を把握する逆質問を投げかける



こうしたトレーニングを通して,円滑なコミュニケーションができるように,日々取り組んで行きたいと思います.



コミュニケーションの難しさ,まだまだたくさんありそうですね.
難しさに気づけるよう,日々疑問と気づきを大切にして行きたいと思います.