NumPy中的数据转换
- 输入的数据是一些一维的numpy数组列表,比如说
x[0] = [ array([1.0,1.0,1.0]), array([2.0,2.0,2.0]), ...]
len(x)
大约有几千行,而len(x[n])
是固定的数字(列数),但每次运行可能会变化(所以我不想把列数写死)。- 函数
f(x[n][col])
会把每个array
转换成一个单一的数字。 - 我想要的结果是一个转换后的列的列表。
这些列表是用来绘图的,所以它们可以是numpy的数据结构。这里有一些代码来设置测试数据和假想的转换:
import numpy
# create test data set
def datagen(number):
return numpy.array([number,number,number])
x=[]
for rows in range(20):
dataline = [ datagen(n) for n in range(5)]
x.append(dataline)
#define transformation of array to single number
def f(in_array):
return in_array.sum()
我想要的结果——以numpy和python的方式得到:
[ array([0,0,0,...0]), array([3,3,3,....,3]), array([6,6,6,...,6]), ..etc]
在这个例子中,每个数组有20个元素(对应每行数据),而列表中有5个数组(对应每列)。
这是我目前的解决方案:
trans = []
for dataline in x:
trans.append([f(a) for a in dataline])
trans = numpy.array(trans)
answer = [ trans[:,col] for col in range(len(x[0])) ]
还不错,但我觉得有点复杂,感觉可以做得更好。???
在实际情况中,f(a) = numpy.sqrt(numpy.vdot(a,a))
。
1 个回答
1
这样怎么样:
numpy.tile(numpy.arange(1,12).reshape(11,1),20)