MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

各プログラミング言語における高階関数による関数型プログラミングの初歩入門


Javaによる関数型プログラミング ―Java 8ラムダ式とStream

目次

  • 目次
  • はじめに
  • 複数の条件を元にソート
    • Python
    • Java
    • Julia
  • 同じデータでグルーピングするgroupby
    • Python
    • Java
    • Julia
  • 一つのリストから、複数の要素を作り、一つのリストにまとめる (flatmap)
    • Python
    • Java
    • Julia
  • 複数の関数を繋げるチェーンラムダ
    • Java
    • Julia
  • 参考資料
  • MyEnigma Supporters

はじめに

ちゃんとした関数型プログラミングは少し敷居が高いですが、

高階関数をベースとしたシンプルなものは、使えると便利なので、

様々な言語で実装したものを、まとめておきます。

続きを読む

SciPy 1.10.0がリリースされました


Python プログラミング - NumPy SciPy ソフトウェアプログラマー コーダー パーカー

目次

  • 目次
  • はじめに
  • Tweetまとめ
  • 参考資料
  • MyEnigma Supporters

はじめに

本日、

自分がコア開発者のメンバーとして参加している

SciPyの新しいバージョン1.10.0がリリースされました🎉

github.com

 

今回も、1.10.0の新機能や特徴を、

連続ツイートでまとめてみたので、

そちらを、あとから参照しやすいように

記事としてまとめておきます。

 

過去のバージョンの記事は下記の通りです。

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

  

続きを読む

Vimユーザのためのlessコマンドによるファイル閲覧入門


Unix考古学 Truth of the Legend (アスキードワンゴ)

目次

  • 目次
  • はじめに
  • lessコマンドの特徴
    • 大きなファイルの閲覧を高速にできる
    • 大抵のOSで、Unixツールの一つとして使える
    • 操作の方法がvimに似ている
  • lessの基本的な使い方
    • 基本操作系
    • 検索
    • grep
    • ログ監視
  • 参考資料
  • MyEnigma Supporters

はじめに

サイズの大きいテキストファイルや、

ログファイルを見る時に、

今までは、

$ vim -u NONE

でvimでそのファイルを開いて見ていたのですが、

vimは一度そのすべてのファイルをメモリ上に読み込んでしまうので、

サイズの大きいファイルだと、やはりつらいなと思っていました。

 

そこで、最近になって、Unixのpagerとして有名な

lessコマンドを変わりに使い始めた所、

vimユーザである自分には、かなり使いやすかったので、

便利な使い方をまとめておきたいと思います。

続きを読む

初心者のためのCython入門


Cython ―Cとの融合によるPythonの高速化

目次

  • 目次
  • はじめに
  • Cythonとは?
  • 言語としてのcython
  • cythonの使い方
    • cythonコードのビルドフロー
  • pydファイル
  • Cythonの基本的な使い方
    • 関数の引数や返値に型を付ける
    • 変数に型を付ける
    • C/C++のvectorを使う
    • 配列の境界チェックや負のインデックスアクセスをオフにして高速化する
    • 並列処理をする
  • Cythonの注意点
  • 参考資料
  • MyEnigma Supporters

はじめに

Pythonは、非常に沢山のライブラリが存在し、

プログラミング初心者でも簡単にコードを書くことができることから、

非常に利用が広がっていますが、

処理速度が遅いという欠点があります。

 

この問題を解決する方法の一つとして、

処理のボトルネックになっている部分を、

C言語などのコンパイル言語を使うことで、

高速化する方法がありますが、

そのように、既存のC言語のコードとPythonを連携させたり、

Pythonのコードに少し型情報などを追加することで、

高速化することができるのが、Cythonです。

cython.org

 

今回の記事では、Cythonの概要と簡単な使い方を紹介したいと思います。

続きを読む

PythonからbitlyのWebAPIを使って、URLを短縮する


Web APIの設計

目次

  • 目次
  • はじめに
  • Pythonサンプルコード
  • 参考資料
  • MyEnigma Supporters

はじめに

このあたりの資料を見れば、すぐに作れますが、

関数化しておくと、何かと便利なので、こちらも貼っておきます。

 

bitlyのアカウントを作って、

下記のリンクでトークンを作り、

app.bitly.com

下記の関数を、トークンと短縮したいURLで呼ぶだけです。

 

続きを読む

書評『ROS2とPythonで作って学ぶAIロボット入門』


ROS2とPythonで作って学ぶAIロボット入門 (KS理工学専門書)

目次

  • 目次
  • はじめに
  • ツイート書評
  • 参考資料
  • MyEnigma Supporters

はじめに

冒頭の書籍を出版社の方から献本していただいたので、

Twitterの連続ツイートで書評してみたので、

そのまとめ記事です。

続きを読む

滑らかな曲線を作成するためのscipy.interpolate.BSpline入門


Bezier and B-Spline Techniques (Mathematics and Visualization)

目次

  • 目次
  • はじめに
  • BSplineとは?
  • SciPyにおける1次元のBスプライン曲線を生成するルーチン
    • 1. スプライン補間
      • FITPACKのAPIによるスプライン補間
    • 2. スプライン近似(スムージング)
      • FITPACKのAPIによるスプライン近似
  • 参考資料
  • MyEnigma Supporters

はじめに

様々なデータを補間したり、スムージングしたりするのに、

三次スプライン曲線はよく使われますが、

myenigma.hatenablog.com

より複雑な曲線を表現するのに、BSplineという曲線があり、

Pythonの科学技術計算用ライブラリであるSciPyでは、

このBSpline用のクラスや便利関数を提供しています。

stackoverflow.com

今回の記事では、SciPyが提供するBSpline関連のツールの使い方を

紹介したいと思います。

 

続きを読む

書評『Unityではじめる ROS・人工知能 ロボットプログラミング実践入門』


Unityではじめる ROS・人工知能 ロボットプログラミング実践入門

目次

  • 目次
  • はじめに
  • ツイート書評
  • 参考資料
  • MyEnigma Supporters

はじめに

冒頭の書籍を出版社の方から献本していただいたので、

Twitterの連続ツイートで書評してみたので、

そのまとめ記事です。

続きを読む

SciPy 1.9.0がリリースされました


Python プログラミング - NumPy SciPy ソフトウェアプログラマー コーダー パーカー

目次

  • 目次
  • はじめに
  • Tweetまとめ
  • 参考資料
  • MyEnigma Supporters

はじめに

本日、

自分がコア開発者のメンバーとして参加している

SciPyの新しいバージョン1.9.0がリリースされました🎉

github.com

 

今回も、1.9.0の新機能や特徴を、

連続ツイートでまとめてみたので、

そちらを、あとから参照しやすいように

記事としてまとめておきます。

 

過去のバージョンの記事は下記の通りです。

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

続きを読む

SQLite3のCLIとSQLを使った、シェル上でのCSVファイル簡易データ解析手法


10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

目次

  • 目次
  • はじめに
  • 事前セットアップ
  • データ解析レシピ
    • 5行表示する
    • 表示する行を指定
    • htmlやjson, SQLとして出力
    • 総行数を数える
    • GROUP BYで同じデータの数を数えたり、平均を取る
    • 複数列でのGroup byと統計計算
    • シェル関数を使って、コマンドの簡易化
  • 参考資料
  • MyEnigma Supporters

はじめに

手元に大きめのCSVファイルがあり、

そのデータを少し解析したい場合は、

Excelを使うか、PythonのPandasで解析することが多いのですが、

myenigma.hatenablog.com

myenigma.hatenablog.com

ちょっとSQLを使いたいなぐらいですと、

Excelだと結構たいへんですし、

Pandasだと少し面倒に感じることがありました、

今回は、下記のTweetで知った、

組み込みのDBであるsqliteのCLIツールを使って、

シェル上で簡単にSQLを使って、CSVファイルのデータ解析をする

手法を紹介したいと思います。

続きを読む