私はscipyのloadmat
関数を使ってPythonにmatlabのデータファイルを読み込みます。numpy ndarrayの要素にアクセスするには?
from scipy.io import loadmat
data = loadmat('data.mat')
fields = data['field']
fields
のタイプnumpy.ndarray
ある:
print 'fields type={}'.format(type(fields))
print 'fields dtype={}'.format(fields.dtype)
print 'fields shape={}'.format(fields.shape)
fields type=<type 'numpy.ndarray'> fields dtype=object fields shape=(5,)
Iはnditer
を使用してアレイを反復処理:
for x in np.nditer(fields, flags=['refs_ok']):
print 'x={}'.format(x)
print 'x type={}'.format(type(x))
print 'x dtype={}'.format(x.dtype)
print 'x shape={}'.format(x.shape)
break
x=[u'ACE'] x type=<type 'numpy.ndarray'> x dtype=object x shape=()
はIndexError:私はx
の最初の要素にアクセスしようとした場合
私はIndexError
を得る:
x[0]
--------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-102-8c374ae22096> in <module>() 17 print 'type={}'.format(type(x)) 18 print 'dtype={}'.format(x.dtype) ---> 19 x[0] 20 break 21 IndexError: too many indices for array
質問:
- どうして、
type(x)
戻り場合nump.ndarray
それは "配列のためのインデックスが多すぎる"と言いますか? x
の内容を文字列に抽出するにはどうすればよいですか?
はここで私が使用しているバージョンです:
print 'python version: {}'.format(sys.version)
print 'numpy version: {}'.format(numpy.__version__)
print 'scipy version: {}'.format(scipy.__version__)
python version: 2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2] numpy version: 1.11.0 scipy version: 0.17.1
'x.shape'を印刷できますか? –
@C_Z_ - '()'を返す 'x.shape'を含むように質問を更新しました –
これは0dの配列です。これは0要素のタプル' x [()] 'でインデックスを付ける必要があります。私の答えを見てください。 – hpaulj