[英]List indices must be integers, not tuple?
我得到了一個.mat文件,它是1024*1024*360
即3D對象。 我將數據分為三個.mat文件A,B和C。它們三個都是1024*1024*120
。 我正在將它們加載到1024*360
的矩陣'mat'中。 我正在逐一加載它們,然后刪除它們以騰出空間。 基本上,它只是點240處3D對象的2D切片。稍后,我嘗試繪制圖像。 以下是我的代碼:
import scipy.io
import numpy as np
mat = np.zeros((1024,360))
x = scipy.io.loadmat('/home/imaging/Desktop/PRAKRITI/Project/A.mat')
x = x.values()
mat[:,0:120]= x[240,:,:]
del x
y = scipy.io.loadmat('/home/imaging/Desktop/PRAKRITI/Project/B.mat')
y = y.values()
mat[:,120:240]= y[240,:,:]
del y
z = scipy.io.loadmat('/home/imaging/Desktop/PRAKRITI/Project/C.mat')
z = z.values()
mat[:,240:360]= z[240,:,:]
del z
import matplotlib.py as plt
imageplot = plt.imshow(matrix)
我收到此錯誤:
mat[:,0:120]= x[240,:,:]
TypeError: List indices must be integers, not tuple
有人可以在這里建議我做錯了什么嗎?
您必須從原始x矩陣創建一個numpy數組。 這就是為什么普通的python數組不接受numpy類型的花式索引的原因,就像matrix [x,y,z]只接受matrix [x] [y] [z]這樣。
import scipy.io
import numpy as np
mat = np.zeros((1024,360))
x = scipy.io.loadmat('/home/imaging/Desktop/PRAKRITI/Project/A.mat')
x = np.array((x.values()))
mat[:,0:120]= x[240,:,:]
del x
y = scipy.io.loadmat('/home/imaging/Desktop/PRAKRITI/Project/B.mat')
y = np.array((y.values()))
mat[:,120:240]= y[240,:,:]
del y
z = scipy.io.loadmat('/home/imaging/Desktop/PRAKRITI/Project/C.mat')
z = np.array((z.values()))
mat[:,240:360]= z[240,:,:]
del z
import matplotlib.py as plt
imageplot = plt.imshow(matrix)
或者,您可以使用x[240][:][:]
代替x[240,:,:]
很高興為您提供幫助! 如果您覺得我的回答對您有用,請隨時接受。 :-)
繼續:
因為下面的代碼運行良好,所以我想問題出在加載矩陣的尺寸iexvalues()等處。因此請首先使用print x.shape()進行檢查。
import numpy as np
mat = np.zeros((1024,360))
x = np.zeros((1024,1024,120))
mat[:,0:120] = x[240,:,:]
print mat
[[ 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.]
[ 0. 0. 0. ..., 0. 0. 0.]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.