我在SciPy文档中看到了这个例子:
这里的最后一个.T实际上起到了什么作用?
x, y = np.random.multivariate_normal(mean, cov, 5000).T
这里的最后一个.T实际上起到了什么作用?
.T
访问对象的属性T
,该属性恰好是NumPy数组的转置。属性T
是该数组的转置,详见文档。multivariate_normal()
的输出可能如下所示:>>> np.random.multivariate_normal([0, 0], [[1, 0], [0, 1]], 5)
array([[ 0.59589335, 0.97741328],
[-0.58597307, 0.56733234],
[-0.69164572, 0.17840394],
[-0.24992978, -2.57494471],
[ 0.38896689, 0.82221377]])
array([[ 0.59589335, -0.58597307, -0.69164572, -0.24992978, 0.38896689],
[ 0.97741328, 0.56733234, 0.17840394, -2.57494471, 0.82221377]])
通过序列解包,可以方便地将其分成x
和y
两个部分。
T
是一个描述符。你可以把它想象成每次访问.T
时调用的函数。另外请注意,转置只是对原始数组相同数据的一种不同步长的视图。因此,如果您执行b = a.T
,然后更改a
中的项目,则b
中对应的项目也会更改。 - Sven Marnach.T就是np.transpose()的简写。祝你好运。
示例
import numpy as np
a = [[1, 2, 3]]
b = np.array(a).T # ndarray.T The transposed array. [[1,2,3]] -> [[1][2][3]]
print("a=", a, "\nb=", b)
for i in range(3):
print(" a=", a[0][i]) # prints 1 2 3
for i in range(3):
print(" b=", b[i][0]) # prints 1 2 3
.T
会反转轴的顺序,而不是交换最后两个轴。这意味着如果你的数组x
是三维的,那么x.T
与x.transpose((2, 1, 0))
是相同的。如果你想要交换最后两个轴,在这种情况下,你需要使用x.transpose((0, 2, 1))
。 - Hameer Abbasi