- 输入数据是一维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的数据结构。 下面是一些代码来设置测试数据和名义变换: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()
期望result--得到在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])) ]
不是太寒酸,但我的头很痛,我有一种感觉,这是可以做到更好。 ??? (a)= numpy.sqrt(numpy.vdot(a,a))
。
是什么'F'样子?为了引导一个函数,我们需要知道函数的作用。 – 2011-05-03 10:43:26
嗨斯文,这是矢量的大小(编辑后)。 – Pete 2011-05-03 12:16:44
你真的需要使用numpy数组列表吗?如果您刚开始使用3D阵列,这将是一个单线程。 ('ndarray.sum'可以很容易地沿单轴运行。) – 2011-05-05 01:40:47