【问题标题】:Meaning of .T when using numpy.random.multivariate_normal [duplicate]使用 numpy.random.multivariate_normal 时 .T 的含义 [重复]
【发布时间】:2018-10-03 22:50:31
【问题描述】:

所以如果我有这段代码,它与 numpy 参考页面上的 demostartion 基本相同:

import numpy as np
import matplotlib.pyplot as plt

mean = [0,0]
cov = [[1,-0.5], [-0.5,1]]

n = int(input("How many random points?"))

x, y = np.random.multivariate_normal(mean, cov, size = n).T

plt.plot(x,y, 'x')
plt.show()

我不明白第 9 行末尾的 .T 的含义,但是如果没有它,程序会给出错误

ValueError: too many values to unpack (expected 2)

谁能解释这个错误以及修复它的 .T 的含义

谢谢

【问题讨论】:

    标签: python numpy matplotlib


    【解决方案1】:

    .T 转置矩阵。所以在你的情况下,如果n=2,你的代码将在没有转置的情况下工作(或者至少,将运行没有错误),因为矩阵如:

    >>> np.random.multivariate_normal(mean, cov, size = 2)
    array([[ 1.4594626 , -0.55863612],
           [-1.17139735, -0.36484634]])
    

    可以分成 2 个数组(x 将是 [ 1.4594626 , -1.17139735]y 将是 [-0.55863612, -0.36484634])。请注意,这不一定是您要查找的内容,并且您最终可能会绘制错误的内容(取决于您要执行的操作)。

    但是对于更大(或更小)的东西,它不会:

    >>> np.random.multivariate_normal(mean, cov, size = 5)
    array([[-0.34091962,  2.2368088 ],
           [-1.11081547,  0.93089064],
           [ 1.45452483, -0.40007311],
           [ 0.96038401,  0.26206106],
           [ 0.3079481 ,  0.66869094]])
    

    因为这实际上是您尝试将 5 个数组解压缩为 2 个变量(因此出现错误)。但是,当您转置它时:

    >>> np.random.multivariate_normal(mean, cov, size = 5).T
    array([[ 0.04466423,  0.88384196,  0.09108559, -2.30473587,  1.58497064],
           [ 0.66190894,  0.90202853,  0.31090378,  0.95697681, -0.61557393]])
    

    你可以走了。您的 x 数组将是第一个“行”:[ 0.04466423, 0.88384196, 0.09108559, -2.30473587, 1.58497064]y 将是您的第二个:[ 0.66190894, 0.90202853, 0.31090378, 0.95697681, -0.61557393]

    【讨论】:

    • "如果n=2,您的代码将在没有转置的情况下工作"。不,不会的。它不会抛出错误,但会绘制错误的内容。
    • 没错,好点。我的意思是它可以工作,因为该数组将能够被解压缩成 2 个变量。我已经在回答中做了注释,谢谢!
    【解决方案2】:

    ndarray.T 是行和列的转置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-19
      • 2010-09-30
      • 2012-01-22
      • 2013-02-17
      • 1970-01-01
      • 2017-08-22
      • 2019-12-17
      • 2013-02-17
      相关资源
      最近更新 更多