情報学部大学生のダラダラ日記

β日記

機械学習や日記っぽいものを書きます

映画ワンピース スタンピードを公開初日に見てきた感想※ネタバレややあり

 

はじめに

このブログの対象は

・既に映画を観てこんな細かいことに気付いたぞって人

・煩雑な文章でも気にならない人←これ大事

つまり未視聴者などあらすじを確認したい人にとってはあんま…って感じになっちゃう

 

まずは予告↓↓

ゲrrrrrrrrrッロおもしろかった!!!!!!!

今まで二回観たい映画とかなかったんだけどこの映画はまた観たいと思った。てか観る。なんなら買う。小説も買う。文章で色々補填してあるだろうし絶対買う。

 

今回の映画のみどころ(若干ネタバレ?)

今回の見どころはやっぱりキャラの多さ。最悪の世代は全員出た。当然我らがウルージ様も極上のスマイルを見せてくださり、15億のルフィにも臆さず交戦するなど元気であられた。パンダマンが僕の体感だと10回ぐらい出てた気がする(実際はもっと多いかも)。まあパンダマンはどうでもいいんだけど。ナチュラルにケイミ―とパッパグとはっちゃん出てたしコニスもオープニングで背中だけ出てた気もする。あとはグラント(アニオリのキャラ)も1フレームぐらい出ててビビった 。他は映画常連となったルッチ君とサボ君。七武海もウィーブルとクマとドフィとジンベエ以外新旧揃って出たかな。個人的にジンベエいつ出るかなってわくわくしてたんだけど出なかったのは残念。多分時系列的にWCL編の後だから仕方ないのかも。エンディングではっちゃんと革命軍が手振るシーンあったけどこれコアラと再会してないのかな…。クロコさんとロビンの再開させるのもびっくりしたしこういうたくさんキャラ出す映画だと関係性とか考えなきゃいけないから大変そうだよね。

 

今回のラスボス・バレットについて

バレットは元ロジャー海賊団(他にも過去にあるけど)で、「"鬼"の跡目」とも呼ばれており、作中ではバギーに「レイリーに匹敵する」と言われています。実際に最悪の世代全員を相手に圧倒するなど正直「これどう倒すんだ…」って思ってた。ていうかバレットすげええともなったけど「これと同等のレイリーさん何者だよ…」の気持ちの方が大きかった。いや本当にどういうこと…??

 

ウソップさん

今回、真っ先にバレットにボコされちゃうウソップさん。この時バレットに言われた(ウソップは気絶してたから気付いてないかも)言葉が「弱い、使えない部下なんか切り捨てろ」でもうこれね…。W7でルフィに言ったセリフと重なっちゃってなんかつらくなっちゃったよ…。

おわりに

こんなに見づらく、ただ興奮冷めやらぬ中書いた雑な文章を読んでくださってありがとうございました。何か間違いやこんな発見したぞ!ってのがあったらコメントで教えていただけると幸いです!

グッズたくさんあったけどおっさん達が群がってて買えなかった…。パズルとか欲しかった。

[rakuten:cinemacollection:10277483:detail]

 

 

 

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

Python3で大容量のcsvファイルを分割して読み込む

はじめに

この記事は記事タイトルの趣旨に関係のない所謂冗長なコードとなってしまっているので書き直しました。以下の記事へ飛んでいただけると幸いです。

parco1021.hatenablog.com

 

実験の講義で大容量のcsvファイルをなるべく高速に検索するシステムを作ることになり、Pythonを使うことにした。ちなみにPythonは動作がありえん遅いためこの課題には不適切だけどとにかくPythonが使いたかった。

 

使用機材

RaspberryPi

Python3.X

コード


import csv
import pandas as pd

df = pd.read_csv('True.csv',chunksize = 8000000,names=('id','time','lati','long','url','tag'),usecols=['time','lati','long','url','tag'])
for r in df:
    for row_index,row in r.iterrows():
        if row[4] == sys.argv[1]:
           for i in range(0,4):
              print(row[i])

コード自体は短い。Pythonで大容量ファイルを使うなんてことはそうそうないから他にも普通にopen csvして一行ずつ読み込んだり試したけどどうも動作が遅いしスマートなコードにならなかったからやめた。

 

コードの説明

今回はpandasライブラリを使った。大容量に強いらしいし。

まずpandasを使ってファイルを読み込む。この時、chunksizeでファイルを分割する。usecolsで使うカラムを指定。iterrows()を用いてリスト形式で出力。sys.argv[]はphpのexec()関数から渡された値(この場合だとユーザが打ち込んだ検索ワード)が検索対象のタグと一致した時に~って処理をしてる。一致したらそのデータ出力という処理が全体の概要。

緑字の説明

chunksizeは一回で何行データを読み込むかを指定する。例えば今回の実験では2000万行のcsvファイルを扱ったが、chunksizeを1000万と指定すれば1000万×2回に分割、400万と指定したら400万×5回に分割することができる。なぜそんなことをする必要があるのかというと、メモリにのらないほどの大容量ファイルだと一度に読み込もうとすると読み込むことができない。そこでファイルをメモリにのる程度に分割することで大容量ファイルでも読み込むことを可能とする。当然分割するファイルが多いほど(chunksizeが小さいほど)実行速度は遅くなってしまうため使用機材のメモリが許す限り大きな値に設定すべきである。今回使ったラズパイ君は1GBしかメモリがないからchunksizeもとても小さくなってしまい(100万ぐらい)、結局思ったより早くならなかった。もっとメモリが大きかったりファイルが小さかったりしたらいい感じになったかも。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

 

 

 

【Python3】「DeprecationWarning: Call to deprecated function ~」の解決方法

ある日

Pythonでエクセルのデータ解析するかぁ~と思ってファイルを開こうとしたら…

DeprecationWarning: Call to deprecated function get_sheet_names (Use wb.sheetnames).

 のエラー文。最初は???って感じだったけど英単語調べた結果意訳すると「おめえそろそろなくなるメソッドつかってんぞ」とのこと。そして親切にも(Use ~)と教えてくれているので素直に従うと解決した。

 まとめるほどのことでもないけどエラー文を読まず時間を浪費した自分への戒めとして残す。

 

おわり

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

二次方程式の解の公式の導出方法をざっくり

はじめに

 二次方程式の解の公式は誰でも知っている公式だと思います。しかし導出できますか?と聞かれるとできない人も一定数いると思います。というか導出できる云々より中学生の時に機械的に覚えさせられたから導出するという発想にすら至らないかもしれません。高校数学までならばほぼすべての公式が導出可能です。数Ⅲなどでは一部大学数学でしか証明できないものもありますが。大学の理論数学とかはもう導出とかそういう次元じゃないので高校数学がどれだけ良心的だったかわかります。

本題

まずは二次方程式の解の公式

 0=ax^2+bx+c x=\frac{-b±\sqrt{b^2-4ac}}{2a}

見慣れたものだと思います。大学生になるとこの式は忘れているかもしれません。僕もうろ覚えでした。これを導出します。導出方法は平方完成をすればいいだけなのでそんな難しくありません。

 まず、前提条件として二次方程式であるためa≠0、bとcは任意の実数です。
 
 0=ax^2+bx+c =a(x^2+\frac{bx}{a})+c
 0=a((x+\frac{b}{2a})^2-\frac{b^2}{4a^2})+c
 (x+\frac{b}{2a})^2=\frac{b^2}{4a^2}-\frac{4ac}{4a^2}
 (x+\frac{b}{2a})=\frac{±\sqrt{b^2-4ac}}{2a}
 x=\frac{-b±\sqrt{b^2-4ac}}{2a}
もっと詳細に書く気満々だったけど思ったより数式を打つのがダルかったので色々省略。質問、訂正あったら教えてください。頭やわらかくするつもりで書き始めたけど結
Texの勉強になってしまって頭の頭痛が痛い。
おわり。
 

 

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

【Python3】改行しながらテキストファイルに出力する

敗北者

改行できないの悔しすぎる。俺は敗北者。

コード1


#coding:utf-8
import random

number = [0.1,0.2,0.3,0.4,0.5,0.7,0.9]
delay = random.choice(number)

_delay = str(delay)

f = open('a.txt','a')
f.write('\n'.join(_delay))
f.close

出力

0

.

3

0

.

4など

…そうじゃないんだけどなあ

原因

原因として考えられるのは「0.3」を書き込んでいるんじゃなくて「0」「.」「3」を書き込んでるからそのたびに改行コードを打ち込んじゃっている。そこを力業でデバックする。

コード2


#coding:utf-8
import random

number = [0.1,0.2,0.3,0.4,0.5,0.7,0.9]
delay = random.choice(number)

_delay = str(delay)

f = open('a.txt','a')
f.write(_delay)
f.write('\n')
f.close

これはf.write()で書き込んだ後に改行コードを打ち込んでいるから確実っちゃあ確実だけどスマートじゃないからあんまやりたくなかった。。。

出力

0.3

0.4

ちゃんと思った通りに動いた。

余談

「かいぎょう」って打って一番に「開業」出てくるのやめてほしい。開業コードとかないから。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

Psychopy(Python)とArduinoでシリアル通信してみた

 

目的

python3からArduinoへシリアル通信を行い、ある文字列がきたらモーターを振動させるという処理をすること

プログラム(失敗例)

Python

import serial 
import time 
print('Start') 
ser=serial.Serial('COM5',9600) 
ser.write("a") 
print('Send')
if ser.in_waiting>0:
 line = ser.read() 
 print(line) 
ser.close()

 

Arduino

void setup() {
  Serial.begin(19200);
  pinMode(8, OUTPUT);  
}

void loop() {
  byte VibON;
  VibON = Serial.read();
 switch(VibON){
  case 'a':
    digitalWrite(8, HIGH);
    delay(40);
    digitalWrite(8, LOW);
    delay(20);
    break;
  default:
  break;
 }
  delay(1);
}

プログラムの説明

 上記のプログラムは正しく動作しないが、一応解説をする。まず、python側でシリアル通信をするためのserialをインポートする。これはデフォルトで入っていたり入っていなかったりするのでない場合は(py -m)pip install pyserialをcmd上で入力すれば入れられる。py -mはWindowsの場合にのみ必要。まずWindowsの不便さでここがうまくいかくて苦労したけどそれは省略。最初からlinux使えばよかた。serial.Serial()の引数は各々帰る。そしてwrite()でArduino側へ送信する。また、Arduinoから返ってきた値を表示するためにread()も書いてある。

 Arduino側はいたってシンプルにSerial.read()で読み取ったデータがaならばモーターを振動させるという処理をさせている。しかしこのプログラムで実行しようとするとエラーが出る。

原因解明

 Arduino側は普通にコンパイルできるしシリアルポートでaを送ると振動する。python側のエラー文を見ると「byte型で送れや」と怒られている。調べてみるとserialはbyte型しか送れないっぽい。じゃあaをbyte型にするにはb'a'とするだけでいいから直して実行するとエラーは出ないがモーターが動かない。


ser.write("a") → ser.write(b"a")

 

Arduinoから返っても来ない。わけがわからないのでとりあえず送るものを表示させてみたらb'a'と送っている。byte型で送っているから当たり前なんだけどこれじゃあaではないのでArduino側も振動するはずがない。次になぜArduinoから返ってこないか考える。通信したことを示すランプは光るし大した処理はしていないからよくわからん。とりあえずネットで検索をかけまくる。そしたらポートを開いてから書き込む間に遅延を発生している人がちらほら(全員じゃない)。とりあえず適当に遅延をかけてみたらArduinoから値が返ってきた!!多分処理が追い付かないまま書き込もうとしちゃって結局書き込めてない的な感じかな。


ser=serial.Serial('COM5',9600) 
ser.write("a") 
↓
import time

ser=serial.Serial('COM5',9600) 
time.sleep(2)
ser.write(b"a") 

 いい感じになってきたのであとはモーターぶるっとさせるだけ。単純に文字列比較だと一生aは送られないからそこを考える。考えた過程とか忘れたので結論char型にして先頭からaを探すという処理をすることで解決した。このプログラム自体は簡単だった。成功プログラムを以下に示す。

プログラム(成功)

Python

import serial
import time

print('Start')
ser=serial.Serial('COM5',9600)
time.sleep(2)
ser.write(b"a")
print('Send')
#time.sleep()
if ser.in_waiting>0:
    
 line = ser.read()
 print(line)
ser.close()
Arduino
void setup() {
  Serial.begin(9600);
  pinMode(8, OUTPUT);  
}

void loop() {
  if(Serial.available() >0){
  int Vib=Serial.available();
  char VibON[Vib+1];
  
  for(int i=0; i<Vib; i++){
    VibON[i] = Serial.read();
    if(VibON[i] == 'a'){
      Serial.print(VibON);
    digitalWrite(8, HIGH);
    delay(1000);
    digitalWrite(8, LOW);
    delay(20);
    }
    VibON[Vib]= '\0';
    Serial.print(VibON);
  }
 }
  delay(1);
}

 

今回使ったArduinoは以下。非純正買ってもいいけど変なところで苦労するかも。

おわり。

 

 

 

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

【Python】'range' object does not support item assignment の解決方法

結論:pythonによるバージョンの違いから吐かれるエラー

このエラー文自体の意味はこれは今のバージョンじゃ使えないよ~ってこと。Python2だとそのままa=range(M)みたいに使えたんだけどPython3からは使えなくなった。

 

どうすれば解決?

range()を使って乱数生成するのは同じ。ただ関数list()を使って

a = list(range(M)) とするとエラーが消えて正しく表示された。注意として変数(この場合はa)を関数名(list)と同じにする、つまり

list = list(range(M))のようにすると変数名と関数名を同じにするな!とエラー文が帰って来るので注意

 

参考文献

blog.tstylestudio.com

 

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

自己紹介

大まかな自己紹介

 2019年現在、情報学系統を専攻している大学生(B3)です。誰かの言葉ではなく自分の言葉でどこかでアウトプットできないだろうかと思いこのようなブログをはじめてみようかなと思いました。また、学業だけでなく日常的なことも書いていこうと思っています。アウトプットとしてこのブログを書くつもりでいるため多少読みにくいことや誤ったことがあるかもしれませんがご了承願います。また、言葉遣いなども不安定だと思います。

 少し触ったことがあるものはLaravelとPythonです。機械学習やWebシステムに興味があります。

 基本的には日記のようなものです。コメント、アドバイスなどどしどし待ってます!

 

 

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

スポンサーリンク