【问题标题】:Reshaping a numpy array重塑一个numpy数组
【发布时间】:2012-05-31 12:07:21
【问题描述】:

我想在 iPython 中重塑以下 numpy 数组:

array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]]) # Array A

到:

array([[1, 5, 9],[2, 6, 10],[3, 7, 11],[4, 8, 12]]) # Array B

主要任务是计算Array A的第一个元素的平均值(意思是1,5,9的平均值),然后是第二个元素,等等

我认为最简单的方法是重塑数组,然后计算它的平均值。

有什么方法可以在不通过for 循环遍历数组的情况下做到这一点?

【问题讨论】:

    标签: python arrays numpy reshape


    【解决方案1】:

    mean 上使用axis 关键字;不用reshape:

    >>> A = np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]])
    >>> A.mean(axis=0)
    array([ 5.,  6.,  7.,  8.])
    

    如果您确实想要数组B,那么您需要转置数组,而不是重塑它:

    >>> A.T
    array([[ 1,  5,  9],
           [ 2,  6, 10],
           [ 3,  7, 11],
           [ 4,  8, 12]])
    

    但是你需要将axis=1mean

    【讨论】:

      【解决方案2】:

      要进行这种计算,您应该使用 numpy。

      假设 a 是你的起始数组:

      a.transpose()
      

      会成功的

      【讨论】:

      • 你知道a.Ta.transpose()有区别吗?
      • 我认为他们会是,但我想我会要求确保一个没有返回副本,而另一个返回 view 或其他东西......
      • .T.transpose() 都返回一个视图。 (我删除了我的评论,因为我认为我错了,但我没有:它们完全一样。)
      猜你喜欢
      • 2017-08-15
      • 2011-10-01
      • 1970-01-01
      • 2017-12-27
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 2019-12-05
      • 2016-02-10
      相关资源
      最近更新 更多