古いノートパソコンにLubuntuをインストール



すでにサポートのきれた古いノートパソコンにLubuntuをインストールしました。
(後半に実際作業した流れを書いています)

LubuntuはUbuntuから派生したディストリビューションで、UbuntuとLXDE(18.10以降はLXQtらしい)を合わせたもの。
 Windowsと比較してマシンスペックが下がっていても動くUbuntuよりもさらに軽量で少ないリソースで動作するとされています(128 MB RAM のメモリの Pentium II または Celeronでも動作確認ありの記載! とはいえ512MBはあったほうがよいようです )

UbuntuでなくLubuntuにしたのはかなり以前のパソコンでスペックが非力であったのと、Ubuntuのデスクトップ画面に若干抵抗があったからです。

ちなみにLubuntu(Ubuntu+LXDE) はUbuntuの後にLXDEをインストールでもいけますが、最初からLubuntuにすると決めていたので直接Lubuntuをインストールしました。

Lubuntuをインストールしたのは10年くらい前に購入したSonyのVAIO、CPUはCore 2 Duo、メモリは2GB、ハードディスク80GB、はじめに入っていたOSはWindows VistaでWindows 7にアップグレードしていました。

まずは最新のLubuntu 18.04のインストールをトライしましたが、何度やっても途中でインストールが止まってしまう… 
このパソコンのスペックでは最新バージョンは無理なのかも、と思いひとつまえの16.04を試したところ…成功しました!
そこで以下は16.04でのインストールの流れです。
(基本的には18でもやり方は同じです。最新バージョンでいける方はそちらで。 

※別のOSをインストールしたところで元のサポートは受けられなくなるのでご注意を(私のは10年前のものでとうにサポートは切れていました)。

※ 以下の操作はすんなりいけばインストールするパソコン1台でもできると思いますが途中でいろいろ調べたり私のように別のバージョンのダウンロードが必要になることもあり別にもう1台パソコンがあったほうが安心です。


【作業の流れ】
注意! あくまで私のパソコンでのことであり、別の個々のパソコンでうまくいくと保証するものではありません。また当然もとのWindowsのソフトやデータは消えますのであらかじめ退避を。)

1. Lubuntu 16.04のダウンロード
まずLubuntu 16.04のダウンロード、ちなみにマシンスペックを考えて32-bit版にしました。
Download Version 16.04.3 LTS からlubuntu-16.04.3-desktop-i386.isoをダウンロード。


2.インストール用のUSBメモリ (ライブUSBメモリ)の作成
次にUSBから起動できるインストール用のUSBメモリ(ライブUSBメモリ)を作成、参考にしたサイトはこちら。

Linuxをインストールできる「ライブUSBメモリ」をWindowsで作成する方法【スクリーンショットつき解説】

Rufusをダウンロード。
中身が消えてもいいUSBメモリを差し込んでrufus-3.8.exeでRufusを起動し、lubuntu-16.04.3-desktop-i386.isoをUSBメモリに書き込んでライブUSBメモリの完成!


3.ライブUSBメモリからの起動
 次にインストールするパソコンがUSBから起動できるようにする。ライブUSBメモリを差し込んで起動でUSB起動しない場合(そのほうが多いと思う)は、BIOSの設定で起動(ブート)の順番を変えることになります。

BIOSの起動はパソコンによって違いますが 、私のは電源ON、ロゴが出たところでF2キー押しでした。BIOS画面が出たところで矢印キーでBootを選択、usbを1番目に変えてF10でsave and exit、いったん電源を切ります。

ライブUSBメモリを差し込んでから起動(私のパソコンはロゴが出たところでF11キーを押す)するとUSBから起動しました。

4.以下画面で選択していく
  • 日本語を選択
  • Install Lubuntuをクリック
  • ようこそで日本語を選択
  •  アップデートとその他のソフトウェアでは「通常のインストール」を選択、その他のオプションをチェック 
  • インストールの種類 前のOSを削除でインストールの場合、「ディスクを削除してUbuntuをインストール」を選択
  • 住んでいるところ Tokyo 
  • キーボードレイアウトで日本語を選択
  • あなたの情報を入力 名前、コンピュータの名前、ユーザー名、パスワードを入力
⇒ インストールが開始
 もちろんPythonをインストールして使えました!


参考サイト
Lubuntu 14.04 LTSのインストール
インストール

Ubuntu 18.04 LTSインストールガイド【スクリーンショットつき解説】

Lubuntu  Ubuntu wikiより

画像処理 オーバーフロー

画像処理
uint8は256(0から255)だがこの範囲をこえるとオバーフローとなる

例)

import numpy as np

num0 = np.uint8(0)
print(num0)

num255 = np.uint8(255)
print(num255)

num256 = np.uint8(256)
print(num256)

num257 = np.uint8(257)
print(num257)

num_minus1 = np.uint8(-1)
print(num_minus1)

num_minus2 = np.uint8(-2)
print(num_minus2)

⇒結果
0
255
0
1
255
254

255をこえて256は1周まわって0になる(257はその次の1)
-1は逆に1周まわって255になる(-2はその次の2)
エラーが返ってこないのでむしろ注意。

標準入力で複数行(文字列)を読み込む方法について(続き)

標準入力で複数行(文字列)をリストに格納する方法についての続き。

readでは読み込んだ文字列を変数に代入した後にsplitで分けてリストを作っている。
readlineとinputは1行ずつ読み込む方法なのでforループを使ってリストに格納していく。
readlinesはリストに読み込むが改行を含んでいるためforループで改行を取り除いて再度リストに格納する。
いずれも複数行でコードを書く必要がある。

しかし、内包表記を使用すれば1行でコードを書くことができる。

同じく、

abcdef
ghijkl
mnopqr
stuvwxyz

について、

①inputの場合、

array_d2 = [input() for i in range(4)]

として、
print(array_d2)で表示すると、
['abcdef', 'ghijkl', 'mnopqr', 'stuvwxyz']
と、リストに格納されていることが分かる。

②同じくreadlineについても

array_b2 =  [sys.stdin.readline().rstrip() for i in range(4)]

とするとリストに格納される。

ただしinputとreadlineは元の文字列の行数が分かっている必要がある。

③readlinesを使えば元の文字列の行数が分からなくてもリストに格納できる。

array_c2 = [line.rstrip() for line in sys.stdin.readlines()]

として、
print(array_c2)で表示すると、
['abcdef', 'ghijkl', 'mnopqr', 'stuvwxyz']
と、きちんとリストに格納されている。

まとめ:
リスト名 =  [line.rstrip() for line in sys.stdin.readlines()]
で複数行の文字列をリストに格納することができる。

行数が分かっていれば、
リスト名 = [input() for i in range(行数)]
でもリストに入れることができる。
 ([sys.stdin.readline().rstrip() for i in range(行数)]でも同じ)

標準入力で複数行(文字列)を読み込む方法について

各種方法で標準入力で複数行(文字列)を読み込んでリストへの格納を行ってみた。

入力の関数、メソッドとしては
read、readline、readlines、input
を使用する。
(read、readline、readlinesではsys.stdinを使う。はじめにsysをimportしておく)

例:
abcdef
ghijkl
mnopqr
stuvwxyz


①read
readは複数行の文字列を改行を含めそのまま読み込む。

a = sys.stdin.read()
で読み込んで、
print(a)
で出力するとそのまま

abcdef
ghijkl
mnopqr
stuvwxyz

と表示される。
print(type(a))でデータの型を確認すると、
<class 'str'>となり、str(文字列型)であることが分かる。

これをリストに入れるには改行でsplitする。

(上記a = sys.stdin.read()で読み込んだ後で)
array_a = a.split("\n")

これを、
print(array_a)
で出力すると、
['abcdef', 'ghijkl', 'mnopqr', 'stuvwxyz']
となり、めでたくリストに格納される。

②readline
readlineは1行ずつ読み込む。また改行もいっしょに読み込む。

b = sys.stdin.readline().rstrip()
で読み込んで、
print(b)
で出力すると、

abcdef

はじめの1行のみが読み込まれて表示される(改行でもう1行(空白が)表示される)。
print(type(b))で型を確認すると、やはりstrである。

複数行をリストに入れるには、forループを使う。またrstripで改行を取り除く。

array_b = []
for i in range(4):
     array_b.append(sys.stdin.readline().rstrip())

print(array_b)で出力すると、
['abcdef', 'ghijkl', 'mnopqr', 'stuvwxyz']
と、リストに格納されていることが分かる。


③readlines
readlineは複数行を読み込んでリストに格納する。ただし改行もいっしょに読み込まれる。

c = sys.stdin.readlines()
で読み込んで、
print(c)
で出力すると

['abcdef\n', 'ghijkl\n', 'mnopqr\n', 'stuvwxyz']
と表示され、
print(type(c))で型を調べると、list(リスト型)と表示される。

そこで、forループでrstripを使って改行を取り除く。

array_c = []

for line in sys.stdin.readlines():
    array_c.append(line.rstrip())

print(array_c)で出力すると、
['abcdef', 'ghijkl', 'mnopqr', 'stuvwxyz']
と、改行が取り除かれてリストに格納されていることが分かる。


④input
iputは1行読み込む。readlineと違い改行は自動的に取り除かれる。

d = input()

で読み込んで、
print(d)
で出力すると、

abcdef
と1行のみ読み込まれている(改行は取り除かれる)。型はstrである。

複数行を読み込むにはforループを使う。readlineと違いrstripで改行と取り除く必要はない。

array_d = []
for i in range(4):
    array_d.append(input())

print(array_d)で出力すると、
['abcdef', 'ghijkl', 'mnopqr', 'stuvwxyz']
と、リストに格納されて表示される。

NumPy配列について③ 2つの配列の結合、hstack、vstack、concatenate

 2つの配列の結合
(すべてはじめにimport numpy as np)

例:2つの2次元配列を使用。
array1 = np.array([[1, 2, 3], [4, 5, 6]])
array2 = np.array([[7, 8, 9], [10, 11, 12]])


①hstackで行方向の結合を行う

array_12a = np.hstack((array1, array2))

出力すると
print(array_12a)
結果:
[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]

2×6の配列となる

②concatenateでaxis = 1とすると同じく行方向に結合する

array_12b = np.concatenate([array1, array2], axis = 1)


③vstackで列方向の結合を行う

array_12c = np.vstack((array1, array2))

出力すると
print(array_12c)
結果:
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

4×3の配列となる

④concatenateでaxis = 0とすると同じく列方向に結合する

array_12d = np.concatenate([array1, array2], axis = 0)
array_12d = np.concatenate([array1, array2], axis = 0)

python print

print_pythonnote print ¶ 言葉や数値を出力する ¶ In [ ]: print ( "...