import numpy as np
means = [[2, 2], [8, 3], [3, 6]]
cov = [[1, 0], [0, 1]]
N = 20
X0 = np.random.multivariate_normal(means[0], cov, N)
X1 = np.random.multivariate_normal(means[1], cov, N)
X2 = np.random.multivariate_normal(means[2], cov, N)
X = np.concatenate((X0, X1, X2), axis = 0)
Y = X[np.random.choice(X.shape[0], 3, replace=False)]
A = [X[np.random.choice(X.shape[0], 3, replace=False)]]
B = A[-1]
print(Y), print(type(Y))
print(A), print(type(A))
print(B), print(type(B))
>>>
[[3.58758421 6.83484817]
[9.10469916 4.23009063]
[7.24996633 4.0524614 ]]
<class 'numpy.ndarray'>
[array([[3.22836848, 7.06719777],
[2.33102712, 0.96966102],
[2.06576315, 4.84061538]])]
<class 'list'>
[[3.22836848 7.06719777]
[2.33102712 0.96966102]
[2.06576315 4.84061538]]
<class 'numpy.ndarray'>
能帮我解释一下
X[np.random.choice(X.shape[0], 3, replace=False)] mean
是什么?
np.random.choice()
是否应该返回一个新数组? 谢谢!
答案 0 :(得分:0)
numpy.ndarray
对象,而A是list
对象。这是由于创建A时的[brackets]
所致。A(列表)中的第一个也是唯一的元素是Y(数组)。答案 1 :(得分:0)
我建议阅读numpy.random.choice上的this documentation,以确切了解该函数的工作方式。在这种情况下,它实际上是从numpy数组X中选择3个随机索引。
Y = X[np.random.choice(X.shape[0], 3, replace=False)]
这行可以这样想:从X中选择3个随机值,并创建一个包含这些值的新numpy数组,并将其命名为Y。
A = [X[np.random.choice(X.shape[0], 3, replace=False)]]
然后,定义一个常规的python列表。这是一个只有一个元素的列表。该元素是X的3个随机值组成的一个numpy数组。关键概念是A仅具有一个元素。但是,那个元素恰好是一个数组,它本身有3个元素。
B = A[-1]
最后,您是对的,它返回A的最后一个元素,并将其称为B。从上面,我们知道A只有一个元素,即3个元素的数组。因此,该数组是列表A的最后一个元素。
主要收获是python允许您使用列表列表,numpy数组列表等。