ここで最初の質問。簡潔にしようと思います。
機械学習アプリケーションの機能情報を含む複数の配列を生成しています。配列の次元が同じではないため、配列ではなく辞書に格納します。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']
次に、辞書を取得する代わりに、内容にアクセスする方法がわからない形状 (0) の numpy 配列を取得します。
In []: loadedFeature1
Out[]:
array({'case 1': array([1, 2, 3, ...]),
'case 2': array([2, 3, 1, ...]),
..., }, dtype=object)
また、文字列は配列になり、奇妙なデータ型を取得します。
In []: loadedString.dtype
Out[]: dtype('|S20')
要するに、これは正しく行われていないと思います。ただし、すべての変数を 1 つの大きな辞書に入れないようにしたいと思います。別のプロセスでそれらを取得し、文字列の比較を気にせずに Dictionary.keys() をループしたいからです。
どんなアイデアでも大歓迎です。ありがとう