python - 无法正确索引 NUMPY 数组的列表

标签 python arrays numpy indexing

我有一个大数组列表。每个数组都包含数据。我还有另一个平均数组,其中每一行包含每个数据数组的平均值。对于数据数组中的每一行,我想减去该行的平均值。下面显示了我正在尝试的一个较小示例:

data = [array([[ 13.964,  13.983,  14.03 , 13.788,  13.771,  13.781], 
               [ 13.845,  13.854,  13.896, 13.688,  13.657,  13.675]]),
        array([[ 14.182,  14.184,  14.223, 14.006,  13.991,  14.001],
               [ 14.216,  14.231,  14.271, 14.042,  14.023,  14.035]]),
        array([[ 15.717,  15.761,  15.812, 15.488,  15.444,  15.489],
               [ 15.861,  15.943,  15.995, 15.64 ,  15.613,  15.62 ]])]

avgs = array([[ 13.9045,  13.9185,  13.963 ,  13.738 ,  13.714 ,  13.728 ],
              [ 14.199 ,  14.2075,  14.247 ,  14.024 ,  14.007 ,  14.018 ],
              [ 15.789 ,  15.852 ,  15.9035,  15.564 ,  15.5285,  15.5545]])

我想要生成的是这样的:(这是一个非常简单的示例,每个数组只有两行,但本质上我想从各种数据数组的每一行中减去数组的平均值。)

subtracted_data = [array([[ 0.0595,  0.0645,  0.067 ,  0.05  ,  0.057 ,  0.053 ],
                          [-0.0595, -0.0645, -0.067 , -0.05  , -0.057 , -0.053 ]]),
                   array([[-0.017 , -0.0235, -0.024 , -0.018 , -0.016 , -0.017 ],
                          [ 0.017 ,  0.0235,  0.024 ,  0.018 ,  0.016 ,  0.017 ]])
                   array([[-0.072 , -0.091 , -0.0915, -0.076 , -0.0845, -0.0655],
                          [ 0.072 ,  0.091 ,  0.0915,  0.076 ,  0.0845,  0.0655]])]

我试着这样做:

subtracted_data = [[]]*len(data)
for i in range(len(data)):
    for j in data[i]:
        subtracted_data[i].append(data[i][j] - avgs[i])

没有成功。我想知道我是否正确地处理了这个问题。

最佳答案

当然,更好的做法是不使用数组列表,而是使用更高维的数组。在你的情况下:

>>> data = np.array(data)
>>> data.shape
(3L, 2L, 6L)
>>> avgs.shape
(3L, 6L)
>>> data - avgs[:, None, :]
array([[[ 0.0595,  0.0645,  0.067 ,  0.05  ,  0.057 ,  0.053 ],
        [-0.0595, -0.0645, -0.067 , -0.05  , -0.057 , -0.053 ]],

       [[-0.017 , -0.0235, -0.024 , -0.018 , -0.016 , -0.017 ],
        [ 0.017 ,  0.0235,  0.024 ,  0.018 ,  0.016 ,  0.017 ]],

       [[-0.072 , -0.091 , -0.0915, -0.076 , -0.0845, -0.0655],
        [ 0.072 ,  0.091 ,  0.0915,  0.076 ,  0.0845,  0.0655]]])

关于python - 无法正确索引 NUMPY 数组的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17532096/

相关文章:

python - MacOS 上 Python 3.7 中的 basemap 构建错误——来自 Cython?

python - 我可以替换 Python 中对象的现有方法吗?

python - numpy.apply_along_axis 究竟执行什么?

java - 当我无法初始化为 null 时,如何初始化数组?

c - 如何使分配的二维数组在打印时不显示任何内容?

python - 参数化数组的矢量化加法

Python - Seaborn fiddle 情节,没有做我想做的事

c - 为什么 gets() 可以正常工作,而 fgets() 却不能?

python - 我可以安全地使用 np.random.binomial 和概率列表

python - np.append 当其中一个值可以为空或 None 时