【问题标题】:Numpy append ones to matrixNumpy将一个附加到矩阵
【发布时间】:2016-02-29 21:55:29
【问题描述】:

我有一个函数需要在给定矩阵的开头添加一列。我已经成功了:

def add_ones(X):
    return np.vstack((np.ones(X.shape[0]), X.T)).T

这可行,但正如您所见,它将矩阵转置两次。我先尝试了没有转置矩阵,但似乎np.ones(m) 总是产生我无法转置的行向量(我试过做np.ones(m).T)

我的问题是,有没有更好的方法来做到这一点?我对 numpy 不是很熟悉,也不知道转置矩阵的性能下降。

【问题讨论】:

    标签: python numpy matrix


    【解决方案1】:

    你可以使用np.concatenate -

    np.concatenate((np.ones((X.shape[0],1)),X),axis=1)
    

    你也可以使用np.column_stack -

    np.column_stack((np.ones((X.shape[0])),X))
    

    最后一个 np.hstack -

    np.hstack((np.ones((X.shape[0],1)),X))
    

    【讨论】:

    • 这正是我想要的,非常感谢。我没有意识到你可以用一个元组调用 np.ones。
    • @Pavlin 是的,您可以这样做来定义一个二维数组,其中ones 沿第一个轴,第二个轴是单例,而不是定义为一维的“非元组”情况沿唯一轴的数组。
    【解决方案2】:

    您可以使用 c_ 添加一列。

    np.c_[np.ones(X.shape[0]), X]

    http://docs.scipy.org/doc/numpy/reference/generated/numpy.c_.html

    【讨论】:

    • 认为那将是np.ones,而且因为OP想要预先添加ones,所以我猜-np.c_[np.ones(X.shape[0]),X]?尽管如此,还是不​​错的紧凑方式!
    • 我认为仍然需要添加 np.ones。
    • 火鸡太多了!再次修复。
    猜你喜欢
    • 2015-10-06
    • 1970-01-01
    • 2021-10-25
    • 2018-06-13
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多