2022年02月16日

2つのlist間計算の課題。これじゃ不正解? pytion日記-28

#!/usr/bin/env python3

import numpy as np

def inner_prod(x, y):
x1 = np.array([x])
x2 = np.array([y])
total = sum(x1 * x2)
return sum(total)
print(inner_prod((1, 2, 3), (4, 5, 6)))

py_list_2022-02-16_23-33-20.jpg

range()もlen()も使っとらせんが、
答えは合っとる。任意の数字でも成立する。
こっちのほうが優秀?

冗談はさておき、連続整数でやっぱり
やるんですかね。len()って、要素の個数を
取得するだけでしょ?  それがどうして
必要なのかがわからない。課題の真意を
掴みかねております。課題を読んだ回数がまだ足りない?

sumを2回も出さないと、listの[]が取れず、
総和の足し算もしないんです。一回では
[4,10,18]って出ます。なぜなんですかね。
ひとつ前の投稿で記述した、似たコードでは、
一回で総和の値が出たのに。

numpy は、外部ライブラリってものらしくて、
sparkylinuxで使えました。コレを使うのは、
反則なんでしょうかね。


posted by ブログ開設者 at 23:52| Comment(0) | linux | このブログの読者になる | 更新情報をチェックする

第二波の、苦悩の始まり。2つのlist間の計算。python日記-27

単一で書けば、
#!/usr/bin/env python3

import numpy as np

x1 = np.array([1,2,3])
x2 = np.array([4,5,6])
x3 = sum(x1 * x2)
print(x3)

実行すると、値として、32が得られます。

これを、最終行のprint()で、

print(inner_prod((1, 2, 3), (4, 4, 6)))

として、やはり32が得られるinner_prodという名の関数を、
という課題です。同じ長さの数字、とありましたから、
数字は連続した整数、2つのリストで同じ数値の個数で、
2つのlistの同じ順位の数値同士の
掛け算をして、計算結果の総和の出る関数を
書け、ということです。range()とか、len()とか、
sum()を使って。

ひとつ前の課題の応用してということなんでしょうけど、
2つの任意の幅の数が入っているlistの入る関数って、
どう嗅げばよいのか。見当がつきません。
いとぐちというか、とっかかりが掴めません。
入った数値の並びが関数内で分解されれるように
するには、どうすればいいのか、とか、、、。
print()の直前にreturnして、関数の側がさーかかってこいと
身構えるわけですよね。

課題文は、range と len を用いて長さの同じ 2 つのリストの
同じ位置にある要素の積の総和を求める関数 を作成しましょう。
例えば、print inner_prod((1, 2, 3), (4, 5, 6))
の出力は 1×4 + 2×5 + 3×6 = 32 となります。
(出題は、python2)

ここの課題の特徴は、入力値をフリーにして、
機能するように、ということで
徹底しています。初心者にむずかしいです。
前回のつまったときは、10日ぐらいでしたが、
こんどはもっとかかりそう。
listというものの基本がわかっていないので。

エクセルで構文を書いて便利に使っている
スーパーサラリーマンなんか、すぐ解くんでしょうね。


posted by ブログ開設者 at 22:15| Comment(0) | linux | このブログの読者になる | 更新情報をチェックする

(加筆)「Archlinuxパッケージ簡易管理コマンド」の使い方。APorteus-CINNAMON_ja-v22.02.02-x86_64.iso

仮想環境のlive起動上でやったことで、正確とは言い難いです。
少し手間が増えたようです。その点についてのみですが。

1)メニューの「システム管理」→
  「Archlinuxシステム簡易管理コマンド」
2)パスワード: toor
3)
spm-1_2022-02-15_23-13-32.jpg
OK。
4)
spm-2_2022-02-15_23-15-34.jpg
OK。
5)
spm-3_2022-02-15_23-23-58.jpg
対象を検索して、ダウンロードボタンをクリック。
6)
spm-4_2022-02-15_23-27-57.jpg
こんな感じで、材料が生成されます。モジュール化する
フォルダのフォルダ名からxzmを取ります。
7)
spm-5_2022-02-15_23-39-10.jpg
名前から.xzmを削除して、モジュール化するのは、
open-vm-toolsの場合、3つで、
sudo mkXZMコマンドで、.xzm付きの
モジュールファイルが生成され、続けてsudo activateします。

モジュールの存在するディレクトリで、こんな感じで、
$ sudo mkXZM open-vm-tools-6:11.3.5-x86_64-3
$ sudo activate open-vm-tools-6:11.3.5-x86_64-3.xzm
$ sudo mkXZM cunit-2.1.2-x86_64-3
$ sudo activate cunit-2.1.2-x86_64-3.xzm
$ sudo mkXZM libmspack-1:0.10.1a-x86_64
$ sudo activate libmspack-1:0.10.1a-x86_64.xzm


usbメモリに、APorteusをインストールした場合、
システム起動に、自動でactivate化させる方法があります。
それについては、ご案内した過去のコメント欄で、
見つけていただけると幸いです。
activateのあとは、systemdのサービスを起動したり、
archlinuxと同じ操作です。

ホスト⇔ゲスト間のテキストコピペはできる
ようになりましたが、共有フォルダのほうは、
live上ではvmware workstation playerのほうの
同設定ができず、状況を試せていません。
仮想環境のlive上、open-vm-toolsを
使わなくても、「モニタ設定」でも、
フルスクリーンにできます。

「追加パッケージ取得」でだいたいの大物は、
インストールできます。こちらは、モジュール化済み。
短時間で取得できます。

   ※誤りがあれば、nekoさんからのご指摘を期待。

↓  ↓  ↓  ↓
インストール後、設定や作成ファイルを
保存できるようにするには、syslinuxの起動の
APPEND行に追記(緑文字)する必要があります。

ファイル:/mnt/sdb1/boot/syslinux/porteus.cfg 

以下は1行。

APPEND initrd=initrd.xz retry copy2ram reboot=force kmap=jp from=UUID:59ddd4cf-a4e6-4394-99a9-bf8bc0860fba/iso/APorteus-LXDE_ja-v16.11.23-x86_64.iso changes=UUID:59ddd4cf-a4e6-4394-99a9-bf8bc0860fba/persis extramod=/extra

変更保存と、生成したモジュール(.xzm)を
自動でactivateさせるためのフォルダを作る:
/mnt/sdb2/persis  及び、/mnt/sdb2/extra
UUIDは、sudo blkidで、適宜調べて反映です。
フォルダの名前は、porteus.cfgの設定と
齟齬がなければ、なんでもok。

「ライブusb生成」を使っての
usbメモリへのインストールは、cd-rなどに
isoを焼いて、live起動させ、当初ダウンロードした
hddをマウントして、isoを指定するか、仮想環境での
live起動であれば、live環境にもう一度、
isoをダウンロードすることになる、と思います。
インストール先のusbメモリのマウント方法は、
環境によって、やり方が違いますが、
マウントはできるはずです。

ubuntuをusbに入れるに比較して、はるかに手間はかかりますが、
仕上がってしまえば、快適に使えると思います。

仮想環境のhddに、コピペでやる場合は、
ブートローダーのインストールが手動になります。

$ sudo cp /usr/share/live-usb/lib/*.c32 /mnt/sda1/boot/syslinux/
$ su
# dd bs=440 count=1 conv=notrunc if=/usr/share/live-usb/lib/\
mbr.bin of=/dev/sda
# /usr/share/live-usb/bin/extlinux64 -i /mnt/sda1/boot/syslinux


ちょっと自信がないですが、こんな感じだったはず。
↓  ↓  ↓  ↓
起動しません。何がいけないのか、わかりません。
(加筆、修正する可能性あり)

「ライブusb生成」でusbメモリに
インストールするのが無難そうです。


posted by ブログ開設者 at 00:36| Comment(2) | linux | このブログの読者になる | 更新情報をチェックする