1. 程式人生 > >only integer scalar arrays can be converted to a scalar index

only integer scalar arrays can be converted to a scalar index

先放總結:因為其實卡在這個地方好幾個小時,這裡奇怪的是在另一個程式裡這樣沒有一點問題,在這裡就出錯了,這位博主的問題和我的經歷類似——在一陣苦惱、煩悶之後,最後都回到去認真研究問題本身,得以解決問題。所以先宣告:我們的問題可能不完全一樣,最重要的是明白你的程式碼是在做什麼,然後才能快速解決問題,節省時間而心情陰雨轉晴。

我的原始碼很長,而且理解問題所在也不必要理解整個程式碼,完整程式碼就不貼了,直接貼 出現錯誤的那裡好了。

上圖就是程式碼中報錯的一段,錯誤提示是:TypeError: only integer scalar arrays can be converted to a scalar index

我是這樣解決的:TypeError: only integer scalar arrays can be converted to a scalar index——這明顯是在說問題應該出在self.z(ix)索引這裡。ix作為索引,我列印了ix這個變數,發現是一個含有三個元素的列表——都是非負整數,而self.z是一個長度為85的列表,因此我明白了,這裡應該是想直接給出一個列表ix作為索引,從self.z中取出3個對應的值。而知道了np.dot(x, y)是在做兩個矩陣的乘法運算後,我就直接原始、粗暴、簡潔的方式來生成這個self.z(ix)矩陣,即self.z(ix)等價於z_matrix = [self.z[ix[0]], self.z[ix[1]], self.z[ix[2]]]

這樣問題就解決了。

出現問題的時候要冷靜啊——這不是一句空話,真的——可是人卻往往陷沒於鬱悶、煩躁裡出不來,冷靜一下,認真分析問題,也許往四周瞅瞅就能看到梯子。