私は0-1の範囲の疎な3次元ノンパラメトリックデータセットを生成しようとしています。データセットにはゼロも含める必要があります。私が使用して、これを生成しようとしました:0-1の範囲内のランダムな疎データの生成
training_matrix = numpy.random.rand(3000, 3)
が、それは、行のいずれかで0.00000としてデータを印刷していません。
私は0-1の範囲の疎な3次元ノンパラメトリックデータセットを生成しようとしています。データセットにはゼロも含める必要があります。私が使用して、これを生成しようとしました:0-1の範囲内のランダムな疎データの生成
training_matrix = numpy.random.rand(3000, 3)
が、それは、行のいずれかで0.00000としてデータを印刷していません。
我々は3
列によってnrows
行のゼロの配列を作成することから始め:
import numpy as np
nrows = 3000 # total number of rows
training_matrix = np.zeros((nrows, 3))
その後、我々はランダムにrange(nrows)
から(交換なし)nz
整数を描きます。これらの数値は、ゼロ以外のデータを持つ行のインデックスです。 training_matrix
のスパース性は、nz
によって決定されます。
nz = 1500 # number of rows with nonzero data
indices = np.random.choice(nrows, nz, replace=False)
そして最後に、我々は
advanced indexingを通じて乱数で選択された行を移入:あなたは(この例ではスパース性を50%に設定されている中で)あなたのニーズに合わせて、その値を調整することができます
training_matrix[indices, :] = np.random.rand(nz, 3)
この上記のコードを実行することによって得られるものです:
>>> print(training_matrix)
[[ 0.96088615 0.81550102 0.21647398]
[ 0. 0. 0. ]
[ 0.55381338 0.66734065 0.66437689]
...,
[ 0. 0. 0. ]
[ 0.03182902 0.85349965 0.54315029]
[ 0.71628805 0.2242126 0.02481218]]
ありがとうございました。 – Angela
5つの数字をすべて0にしたいので、それが起こる確率は1/10^5 = 0.00001で置き換えられます。あなたが3000 * 3 = 9000の値を持っていても、それを得る確率はまだごくわずかです。あなたの心の平和のためにやってみることができる他の何かがランダムな数字を生成し、特定のポイント、つまり小数点以下5桁で切り捨てることです。
あなたの配列はどのような形状にする必要がありますか? – Tonechas
配列は3000行であり、3列の場合はいくつかの行が同じである必要があります。0.00000 0.00000 0.00000 0 – Angela
3000行3列は3D配列ではなく2D配列に対応します – Tonechas