use*_*624 4 python arrays random numpy matrix
我有一个像这样的二维数组/矩阵,我将如何从这个二维矩阵中随机选择值,例如获得像[-62, 29.23]
. 我看了看,numpy.choice
但它是为一维数组构建的。
以下是我的 4 行 8 列示例
Space_Position=[
[[-62,29.23],[-49.73,29.23],[-31.82,29.23],[-14.2,29.23],[3.51,29.23],[21.21,29.23],[39.04,29.23],[57.1,29.23]],
[[-62,11.28],[-49.73,11.28],[-31.82,11.28],[-14.2,11.28],[3.51,11.28],[21.21,11.28] ,[39.04,11.28],[57.1,11.8]],
[[-62,-5.54],[-49.73,-5.54],[-31.82,-5.54] ,[-14.2,-5.54],[3.51,-5.54],[21.21,-5.54],[39.04,-5.54],[57.1,-5.54]],
[[-62,-23.1],[-49.73,-23.1],[-31.82,-23.1],[-14.2,-23.1],[3.51,-23.1],[21.21,-23.1],[39.04,-23.1] ,[57.1,-23.1]]
]
Run Code Online (Sandbox Code Playgroud)
在答案中给出了以下解决方案:
random_index1 = np.random.randint(0, Space_Position.shape[0])
random_index2 = np.random.randint(0, Space_Position.shape[1])
Space_Position[random_index1][random_index2]
Run Code Online (Sandbox Code Playgroud)
这确实可以给我一个样本,多一个样本怎么样np.choice()
?
我在想的另一种方法是将矩阵转换为数组而不是矩阵,例如,
Space_Position=[
[-62,29.23],[-49.73,29.23],[-31.82,29.23],[-14.2,29.23],[3.51,29.23],[21.21,29.23],[39.04,29.23],[57.1,29.23], ..... ]
Run Code Online (Sandbox Code Playgroud)
最后使用np.choice()
,但是我找不到进行转换的方法,np.flatten()
使数组像
Space_Position=[-62,29.23,-49.73,29.2, ....]
Run Code Online (Sandbox Code Playgroud)
只需使用随机索引(在您的情况下为 2,因为您有 3 个维度):
import numpy as np
Space_Position = np.array(Space_Position)
random_index1 = np.random.randint(0, Space_Position.shape[0])
random_index2 = np.random.randint(0, Space_Position.shape[1])
Space_Position[random_index1, random_index2] # get the random element.
Run Code Online (Sandbox Code Playgroud)
另一种方法是实际使其成为 2D:
Space_Position = np.array(Space_Position).reshape(-1, 2)
Run Code Online (Sandbox Code Playgroud)
然后使用一个随机索引:
Space_Position = np.array(Space_Position).reshape(-1, 2) # make it 2D
random_index = np.random.randint(0, Space_Position.shape[0]) # generate a random index
Space_Position[random_index] # get the random element.
Run Code Online (Sandbox Code Playgroud)
如果您想要N
更换样品:
N = 5
Space_Position = np.array(Space_Position).reshape(-1, 2) # make it 2D
random_indices = np.random.randint(0, Space_Position.shape[0], size=N) # generate N random indices
Space_Position[random_indices] # get N samples with replacement
Run Code Online (Sandbox Code Playgroud)
或不更换:
Space_Position = np.array(Space_Position).reshape(-1, 2) # make it 2D
random_indices = np.arange(0, Space_Position.shape[0]) # array of all indices
np.random.shuffle(random_indices) # shuffle the array
Space_Position[random_indices[:N]] # get N samples without replacement
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9522 次 |
最近记录: |