【发布时间】:2014-04-16 21:38:25
【问题描述】:
我刚开始使用 iPython 和 numpy。我确信可以用更少的代码做与下面相同的事情。我想将所有列(=数据点的维度,即行)缩放到 0 到 1 之间的值并将列重新组合为一个具有相同“形状”的数组。
import numpy as np
from StringIO import StringIO
data = np.genfromtxt("wine_names.csv", dtype=float, delimiter=',', skip_header=1)
Data.shape => (178, 14)。一个 178 行 14 列的 csv 文件(14 维 178 个数据点)。
data0 = (data[:,0] - np.amin((data[:,0]))) / (np.amax((data[:,0]))-np.amin((data[:,0])))
data1 = (data[:,1] - np.amin((data[:,1]))) / (np.amax((data[:,1]))-np.amin((data[:,1])))
data2 = (data[:,2] - np.amin((data[:,2]))) / (np.amax((data[:,2]))-np.amin((data[:,2])))
直到 n。在这种情况下,它是 14。我确信这可以用更少的代码编写,但我不知道如何..
data_all = np.column_stack([data0, data1, data2])
这里也是 np.column_stack([data0, data1, data2, ....., n])
【问题讨论】:
-
这应该在代码高尔夫/编程难题中吗?
-
您可以通过
np.min(data, axis=0)获取列的所有最小值,最大值也是如此。
标签: python numpy ipython-notebook