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()
期望的结果 - 以一种笨拙的,pythonic的方式进入:
[ 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))
。
答案 0 :(得分:1)
怎么样:
numpy.tile(numpy.arange(1,12).reshape(11,1),20)