顯示具有 [程式]Python 標籤的文章。 顯示所有文章
顯示具有 [程式]Python 標籤的文章。 顯示所有文章

2020年8月28日 星期五

Python Access Multi Dimensional Array 多維陣列的存取

在機器學習或是人工智慧上
以 Python 為主會遇到一個套件是 NumPy
他在陣列的存取上極其方便
以致後續對於陣列(array)操作 / 矩陣(matrix)運算 / 卷積(convolution)計算都用得上
這邊把學習到的心得整理起來已備後續查找用

以往存取陣列就是用元素存取
例如 X[0][0] 這種
如果要有條件通常就是跑迴圈
而在 Python 裡面則已經內建與法處理掉這種事情
讓程式可讀性(習慣的話)以及效率提升

一開始搞不太懂也不看教程
其實不自己測試只看教程真的是看了也沒懂 (沒fu)
 
首先在一維陣列裡面
x = np.array([0, 1, 2, 3, 4])
x[n]: 取第幾筆
還有一種是可以指定的
格式為 x[start: end: delta]
delta 就是 interval 可以負號則反向
也就是說要抓這個陣列可以給予起始 ~ 結束-1 多久取一次
就是 for (i = start; i < end; i += delta) print(x[i])
delta 負號則為 for (i = end - 1; i >= start; i -= delta) print(x[i])
但是因為是內部處理所以比 for loop 快很多
所以
x[0:3:1] = [0, 1, 2]
x[0:3:2] = [0, 2]
x[2:4:2] = [2]
x[0:] = [0, 1, 2, 3, 4] # 沒寫就是預設
預設是 x[0: length: 1] 以這個例子為 x[0:5:1]
負號則為 x[length-1: 0: -1] 
x[:2:] = [0, 1]
x[1::2] = [1, 3]
x[2::-1] = [2, 1, 0]
x[:1:-2] = [4, 2]
x = x[:] = x[::] = [0, 1, 2, 3, 4]

一維陣列的例子看完後 多維例子就很簡單
以一個三維陣列來說
原本存取有這樣的方式
y[l][m][n] 或是 y[l, m, n]
後者的 l m n 換成剛剛上面一維陣列的格式就可以用了
格式就是 y[ start:end:delta , start:end:delta , start:end:delta]
可以省略的可以簡寫的均相同


補充一下 np.shape(y) 可以查 array 維度






2014年5月8日 星期四

ChatRadio 配備升級及網路架構修改

這是 2011 年家裡的網路架構圖


因為 2012 年底把 CR 放送娘 裝了回來
然後 2013 年初 CR BBS 在外流浪很久也回來了
所以架構有點不一樣了

  

2014年3月23日 星期日

批次轉換檔案的格式

手邊有文字檔遇到這個問題,
有些檔案是ANSI編碼,有些檔案是Unicode編碼,

因為這些檔案都分散在不同的目錄下
我又想要把這些檔案轉換後儲存在原來的目錄原來的檔名
上網找了很多程式,限制都很多
無法同時達到
1. 在不同的目錄下轉換檔案
2. 就算1. 可以也不能存回原來自己的位置
找著找著找到個東西叫 Notepad++ Python Script

2012年12月10日 星期一

ChatRadio V5版 目前架構

因為頭腦真的越來越不好 一定要把一些東西整理起來筆記了

以下列出目前 ChatRadio 的架構
Player:
Foobar2000
plug-in:
foo_httpcontrol (need VS2010 to rebuild, you can reference here and here)
foo_removeplayed
edcast

foobar dsp order
Preferences/Playback/DSP Manager/Active DSPs
Resampler (PPHS)
Advanced Limiter
Hard-6dB limiter
edcast V3
Stream server:
SHOUTcast

ChatRadio Web Interface
Main Framework: PHP+MySQL
UpdateSong: Python27+mutagen+MySQLdb
checkreload: php+Python33+foobar command

2014/5/2補充
因為CR點播娘會自動加入歌曲給 Foobar2000 當歌單快要空的時候,
但是我在用電腦的時候,加入歌曲就會跑出 Foobar2000 視窗,在電
腦操作上總是很不方便,困擾了我一年多的問題原來答案這麼簡單。


2015/3/5補充架構圖

2012年12月8日 星期六

Python 第二關 - 安裝自己需要的擴充套件

上一篇講解了 Python 的開發環境,這裡就繼續補充我有用到的擴充套件

#1 把 Python 的 .py 檔案編譯成 .exe 檔案 - cxfreeze
選擇 Python 的版本下載,安裝完成後在 Python\Scripts 目錄下有 cxfreeze.bat,將要轉換的 python 程式複製到這個目錄下面,開啟 command line 到這個目錄執行
C:\Python33\Scripts>cxfreeze checkreload.py --target-dir dist
完成後,dist目錄下就會出現 checkreload 的執行檔。

#2 安裝獲取 mp3 id3 tag 的程式 - eyeD3
有個英文版的windows平台安裝說明
官網也有簡易的安裝說明,如果需要安裝Setuptools在這,安裝好後就可以使用easy_install來安裝 eyeD3 - 使用指令easy_install eyeD3,或是到 eyeD3 目錄下用 python setup.py install 來安裝。

#3 安裝獲取 mp3 id3 tag 的程式 - mutagen
因為我使用 eyeD3 總有些問題,所以又去找了這套程式。有些檔案 eyeD3 取不到撥放時間的長度,同樣的檔案 mutagen 可以,這裡有 tutorial。

#4 安裝 Mysql for python - MySQLdb
如何link的簡介
tutorial

Python 安裝,我的第一個 Python 程式 - 不是 Hello World!!

好像每個程式一開始總要來個 Hello World!! 其實這是有其意義的
一方面可以讓使用者知道你的環境已經建構起來可以開始撰寫程式碼
另一方面也可以讓使用者有信心說我也可以讓它跑起來。

不少的程式開發環境其實不像微軟提供的IDE(Integrated Development Environment)這麼簡單
可能需要去安裝這個程式的編譯環境,然後還要找個不錯的開發工具,甚至要什麼功能還要自己去找是否有已經開發好的 function 可以呼叫,沒有的話就要自己寫一個。