numpy中的数据转换

时间:2011-05-02 18:08:11

标签: python numpy data-structures

  • 输入数据是1-D 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()

期望的结果 - 以一种笨拙的,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))

1 个答案:

答案 0 :(得分:1)

怎么样:

numpy.tile(numpy.arange(1,12).reshape(11,1),20)