英文:
How to normalization data on numpy array, without MinMaxScaler package
问题
如何在没有MinMaxScaler包的情况下进行数据归一化。在这里,我尝试根据MinMax缩放公式进行操作,但出现了以下错误 IndexError: invalid index to scalar variable.
代码:
scale = []
for i in range(0,6):
minFP = FCData[:,i].min()
maxFP = FCData[:,i].max()
yscale = (FCData[:,i] - minFP) / (maxFP - minFP)
scale.append(yscale)
scale = np.array(scale)
我的数据:
数据形状:(15000,6)
array([[ 4.46733 , 4.39629 , -34.2351 , -4077.23 ,
-6206.81 , -874.539 ],
[ 7.65166 , 2.61174 , -49.7356 , -4846.76 ,
-9060.05 , -1291.39 ],
[ 11.285 , -2.91447 , -87.9661 , -5412.32 ,
-16345.2 , -213.72 ],
[ 12.7313 , -6.48048 , -123.094 , -5939.48 ,
-23005.6 , 443.115 ],
[ 11.6425 , 0.0259204, -131.717 , -6972.53 ,
-24651.9 , -1112.73 ],
[ 12.3602 , 10.1988 , -139.597 , -8544.17 ,
-26118.8 , -3260.79 ],
[ 16.0733 , 12.1455 , -165.01 , -10371.5 ,
-30873.5 , -3643.65 ],
[ 21.1933 , 8.86926 , -210.599 , -12673.2 ,
-39447.9 , -2785.69 ],
[ 24.3619 , 7.59683 , -267.449 , -16170.6 ,
-50300.9 , -2823.35 ]])
英文:
how to normalize data without minmaxscaler package. here I have tried it according to the minmax scale formula. but i get an error like this IndexError: invalid index to scalar variable.
the code:
scale = []
for i in range(0,6):
minFP = FCData[:,i].min()
maxFP = FCData[:,i].max()
yscale = (FCData[:,i] - minFP[i]) / ( maxFP[i] - minFP[i])
scale.append(yscale[i])
scale = np.array(scale)
my data:
Data shape : (15000,6)
array([[ 4.46733 , 4.39629 , -34.2351 , -4077.23 ,
-6206.81 , -874.539 ],
[ 7.65166 , 2.61174 , -49.7356 , -4846.76 ,
-9060.05 , -1291.39 ],
[ 11.285 , -2.91447 , -87.9661 , -5412.32 ,
-16345.2 , -213.72 ],
[ 12.7313 , -6.48048 , -123.094 , -5939.48 ,
-23005.6 , 443.115 ],
[ 11.6425 , 0.0259204, -131.717 , -6972.53 ,
-24651.9 , -1112.73 ],
[ 12.3602 , 10.1988 , -139.597 , -8544.17 ,
-26118.8 , -3260.79 ],
[ 16.0733 , 12.1455 , -165.01 , -10371.5 ,
-30873.5 , -3643.65 ],
[ 21.1933 , 8.86926 , -210.599 , -12673.2 ,
-39447.9 , -2785.69 ],
[ 24.3619 , 7.59683 , -267.449 , -16170.6 ,
-50300.9 , -2823.35 ]])
答案1
得分: 1
你可以使用以下代码在一行内完成这个操作:
scaleddata = (FCData - FCData.min(axis=0)) / (FCData.max(axis=0) - FCData.min(axis=0))
或者(感谢评论中的 @cards 提供的方法),这也可以更加简洁地写成:
scaleddata = (FCData - FCData.min(axis=0)) / np.ptp(FCData, axis=0)
英文:
You should be able to do this on 1 line with:
scaleddata = (FCData - FCData.min(axis=0)) / (FCData.max(axis=0) - FCData.min(axis=0))
or (thanks to @cards in the comments), this could be even shorter with:
scaleddata = (FCData - FCData.min(axis=0)) / np.ptp(FCData, axis=0)
答案2
得分: 0
maxFP和minFP只是值,而不是列表/数组,所以不需要i索引,例如,将yscale = (FCData[:,i] - minFP[i]) / (maxFP[i] - minFP[i])更改为yscale = (FCData[:,i] - minFP) / (maxFP - minFP)。来源:https://stackoverflow.com/questions/75055006/how-to-normalization-data-on-numpy-array-without-minmaxscaler-package/75094153#comment132449311_75055006
英文:
maxFP and minFP are just values rather than lists/arrays, so do not need the i index, e.g., change yscale = (FCData[:,i] - minFP[i]) / ( maxFP[i] - minFP[i]) to yscale = (FCData[:,i] - minFP) / (maxFP - minFP) https://stackoverflow.com/questions/75055006/how-to-normalization-data-on-numpy-array-without-minmaxscaler-package/75094153#comment132449311_75055006
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论