pretty code

2023年3月14日 星期二

產生 GIF 最簡單的方式

有時候想用 gif 動畫表示實驗結果,又不確定那些線上網站工具是否會有問題?

最簡單的方式就是使用 ImageMagick,還可以指定置中好解決圖片大小不一的問題(-background rgb(0,0,0) -gravity center -extent 640x480),extent 就是圖片裡面最大張的規格,如果小於此規格的圖片背景就會填上黑色。

convert -background rgb(0,0,0) -gravity center -extent 640x480 -delay 70 -loop 0 test\*.jpg test\case_g.gif

2023年3月7日 星期二

numpy 一些操作記錄

>>> np.zeros(1)
array([0.])
>>> np.zeros(5)
array([0., 0., 0., 0., 0.])

-------------------------------
>>> np.zeros((1,5))
array([[0., 0., 0., 0., 0.]])
>>> np.zeros((2,5))
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])

-------------------------------
>>> a = np.zeros((2,5))

>>> a[:, 0:2] = 3
array([[3., 3., 0., 0., 0.],
       [3., 3., 0., 0., 0.]])

>>> a[0:1, 0:2] = 5
array([[5., 5., 0., 0., 0.],
       [3., 3., 0., 0., 0.]])

-------------------------------
>>> a.ravel()
array([5., 5., 0., 0., 0., 3., 3., 0., 0., 0.])
>>> a.reshape(2, 5)
array([[5., 5., 0., 0., 0.],
       [3., 3., 0., 0., 0.]])

-------------------------------
>>> np.arange(5)
array([0, 1, 2, 3, 4])
>>> np.arange(6).reshape((2, 3))
array([[0, 1, 2],
       [3, 4, 5]])

-------------------------------
Multidimensional arrays can have one index per axis. These indices are given in a tuple separated by commas:

之前一直很少用 Python,趁此機會把 numpy 搞懂,numpy 的邏輯還是從 Python 的切片運算子來的,只是 numpy 的目的是為了科學或者說數學運算,故常用它來表示矩陣運算。在一些論文中,常常可能會有讓 A 矩陣的某行向量等於 B 矩陣的某行向量,如果是直接使用一個一個元素來指派數值,看來就不專業也很煩瑣。

結論就是上句英文就是操作多維陣列的技巧,故在操作時要先掌握住一個原則,這個陣列或是說矩陣是多少的維度,我想改變的又是那個維度上的資料,是整個向量還是向量裡的某一個元素,這時就可以清楚知道 [xx, xx, ...] 裡面要如何下了,正常來說 3 維就應該有 3 個索引,但要改的是某個特定維度的整個元素,這時後免的索引就可以省略。

>>> A = np.zeros((3, 2, 5))
array([[[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]],

       [[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]],

       [[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]]])

>>> A[:, 0] = 1
array([[[1., 1., 1., 1., 1.],
        [0., 0., 0., 0., 0.]],

       [[1., 1., 1., 1., 1.],
        [0., 0., 0., 0., 0.]],

       [[1., 1., 1., 1., 1.],
        [0., 0., 0., 0., 0.]]])

>>> A[:, 1, -1] = 999
array([[[  1.,   1.,   1.,   1.,   1.],
        [  0.,   0.,   0.,   0., 999.]],

       [[  1.,   1.,   1.,   1.,   1.],
        [  0.,   0.,   0.,   0., 999.]],

       [[  1.,   1.,   1.,   1.,   1.],
        [  0.,   0.,   0.,   0., 999.]]])