Scipy Lecture Notes(一)

由於某些科學計算及應用的高級命題的需要,對Scipy Lecture Notes
展開學習。


IPython的內置變量查詢提供瞭如同Redis的 * 運算。
在IPython中使用%matplotlib後,在利用matplotlib 進行畫圖時在顯示圖片時,
不需要使用plt.show()命令。


非同形數組相加,創造矩陣的例子:
np.arange(6) + np.arange(0, 51, 10)[:, np.newaxis]
這裏可以將數組的相加降到同一維度理解。


np.tile可以進行數組複製平鋪。
也可以思考一下其實現,先生成rep參數相應的np.ones
用其作爲克羅內克乘積(np.kron)的左面參數,A作爲右面參數即得到複製結果。


np.may_share_memory(A, B): 檢查AB是否共享內存,可以檢查數組的拷貝情況,
.copy方法可實現拷貝。


%timeit 可以測試程序花費的時間。


曾經提出的bool ndarray間的並集,交集運算是通過 + * 完成的,ndarray中自然地有
相應的內置接口np.logical_or np.logical_and
但在形式表達的簡易性上,推薦使用 + *
並在之後的有關邏輯運算上,複合使用 + *
這裏要說明一點,對Python bool 類型進行上述運算時,會強制轉換爲整型,雖然不影響比較
結果,相對應的bool 型 ndarray 保持類型不變,這種“好處”應該並不來自於額外的條件設定,
而是ndarray在數組間運算保留了類型(dtype)不變,


下面姑且當一次白學家:
但這是否能認爲ndarray的操作符重載是封閉的?
首先值得注意的一點是,ndarray一旦實例化,對其元素進行修改(如賦值),
都會進行相對於dtype的類型轉換。即使在使用np.array進行初始化時,表現地也很明顯,
如當使用True 與 "kill" 進行初始化時 True被轉化爲 "True",
這是因爲Python內部的類型轉化機制,但儲存不同類型的ndarray也是可以實例化的,
如自定義一個類,並與一個Python內置類型一起初始化一個ndarray,是可以做的。


更爲一般地,想要強制性地取消ndarray生成時的內部變量類型轉換也是可以的,
這可以從ndarray對於自定義類型及內置類型生成ndarray出的dtype得到啓發,
注意到此時的dtype爲object,即一般的Python基類,所以在初始化時指定 dtype = object
即可完成。


下面再看ndarray的操作符重載是否封閉,
通過在具有不同類型的ndarray間的運算試驗,可以看到,對於內置類型,是可以在兩個具有
不同類型(dtype)的ndarray間進行運算,運算的結果 element by element, 並依此進行
element轉型,並最終決定結果。
故在進行運算時,僅需要保證運算在element層面上保持即可。


np.triu: 返回上三角矩陣(包含主對角元素),除了矩陣作爲第一個參數外,第二個參數可以
指定三角矩陣的移位,向上移位位數。(下三角考慮轉置)


IPython 可以使用!執行命令行命令。











發佈了28 篇原創文章 · 獲贊 23 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章