重塑和平均训练数据的矩阵

时间:2017-11-02 18:41:52

标签: python arrays numpy machine-learning

我正在尝试“规范化”训练集的形状 这样我就可以将它们送入香草神经网络。

输入始终具有相同数量的表示要素的“通道”/列 但对于给定的“y”具有不同的行数

是否有python或numpy或其他实用程序可以作为输入的矩阵 尺寸(m,n)的浮子并将其拉伸到给定尺寸的(m,o),其中o> 0。 ñ 通过在平均值

的新形状中插入行

实施例: 我有一个形状数组(4,4),但要求我的数组是(7,4)

[
[1,1,1,1],
[2,2,2,2],
[1,1,1,1],
[4,4,4,4]
]

会变成

[
[1,1,1,1],
[1.5,1.5,1.5,1.5],
[2,2,2,2],
[1.5,1.5,1.5,1.5],
[1,1,1,1],
[2.5,2.5,2.5,2.5],
[4,4,4,4]
]

插入的行之间的平均值之间的平均值 和之后的那个 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你需要调用insert_row(ar,positions),其中ar是要插入行的2d数组,position是位置列表。它返回一个插入行的numpy数组 尝试以下代码:

import numpy as np

ar = [
[1,1,1,1],
[2,2,2,2],
[1,1,1,1],
[4,4,4,4]
]


def insert_row(ar,positions):
    ar = np.array(ar)
    v = ar
    count = 0
    for i in positions:
            a = np.add(ar[i,:],ar[i+1,:])/2
            v = np.vstack([v[0:i+count+1,:],a,v[i+count+1:,:]])
            count+=1
    return v

输出:

    print(insert_row(ar, [1,2]))

     [[ 1.   1.   1.   1. ]
     [ 2.   2.   2.   2. ]
     [ 1.5  1.5  1.5  1.5]
     [ 1.   1.   1.   1. ]
     [ 2.5  2.5  2.5  2.5]
     [ 4.   4.   4.   4. ]]

print(insert_row(ar, [0]))

[[ 1.   1.   1.   1. ]
 [ 1.5  1.5  1.5  1.5]
 [ 2.   2.   2.   2. ]
 [ 1.   1.   1.   1. ]
 [ 4.   4.   4.   4. ]]