ここに最初の質問。私は簡潔にしようとします。辞書と配列を同じアーカイブ(numpy.savez)に保存する方法
機械学習アプリケーションの機能情報を含む複数の配列を生成しています。配列は等しい次元を持たないので、配列ではなく辞書に格納します。 2つの異なる種類の機能があるので、2つの異なる辞書を使用しています。
また、機能を使用するラベルも生成します。これらのラベルは配列に格納されます。さらに、スクリプトの実行に使用される正確なパラメータとタイムスタンプを含む文字列があります。
import numpy as np
feature1 = {}
feature2 = {}
label1 = np.array([])
label2 = np.array([])
docString = 'Commands passed to the script were...'
# features look like this:
feature1 = {'case 1': np.array([1, 2, 3, ...]),
'case 2': np.array([2, 1, 3, ...]),
'case 3': np.array([2, 3, 1, ...]),
and so on... }
今私の目標は、これを行うには、次のようになります:それはこのようになりますすべてで
すべて
np.savez(outputFile,
saveFeature1 = feature1,
saveFeature2 = feature2,
saveLabel1 = label1,
saveLabel2 = label2,
saveString = docString)
これは一見働く(すなわち、このようなファイルはエラーなしスローで保存され、再度読み込むことができます)。しかし、私は再び、たとえばファイルから機能をロードしようとすると:
loadedArchive = np.load(outFile)
loadedFeature1 = loadedArchive['saveFeature1']
loadedString = loadedArchive['saveString']
そして、代わりに戻って辞書を得るための、私は形状のnumpyの配列を取得(0)私がアクセスする方法がわからないところ内容:
In []: loadedFeature1
Out[]:
array({'case 1': array([1, 2, 3, ...]),
'case 2': array([2, 3, 1, ...]),
..., }, dtype=object)
はまた、文字列を配列になり、奇妙なデータ型を取得します:
In []: loadedString.dtype
Out[]: dtype('|S20')
だから、要するに、私はそれが正しく行われているか、これがないと仮定しています。しかし、私は別のプロセスでそれらを取得し、単に文字列の比較を心配することなくdictionary.keys()をループしたいので、私はすべての変数を1つの大きな辞書に入れることを好まないでしょう。
アイデアをいただければ幸いです。 ありがとう
素晴らしい!ありがとうございました! – surchs
私は、 'testarr.flat [0]'によって '()'形の配列の要素にアクセスするほうが好きです。好奇心を抱く読者のために、 'testarr [()]'のように空のタプルを使うこともできますが、これは読みやすさを傷つけます。 –