如何在numpy中以二维矩阵随机采样

用户名

我有一个像这样的2d数组/矩阵,我如何从这个2D矩阵中随机选择值,例如获取像这样的值[-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]]
      ]

在答案中给出了以下解决方案:

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]

这确实可以给我一个样本,像这样的多个样本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], .....   ]

最后使用np.choice(),但是我找不到转换的方法,np.flatten()使得数组像

Space_Position=[-62,29.23,-49.73,29.2, ....]
塞弗特

只需使用随机索引(在您的情况下为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.

另一种方法是将其实际设为2D:

Space_Position = np.array(Space_Position).reshape(-1, 2)

然后使用一个随机索引:

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.

如果要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

或不更换:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在numpy中组合二维矩阵

如何在Matlab中显示二维矩阵

如何在二维 numpy 数组中设置值?

如何在numpy中映射二维数组?

如何在二维 numpy 数组中查找行?

如何通过一维列表中的值屏蔽二维 numpy 矩阵的行?

如何在二维numpy矩阵中找到前n个最小值

如何将一列整数附加到 numpy 中的二维浮点矩阵?

如何隔离符合特定条件的二维 numpy 矩阵中的行?

如何在C中的矩阵(二维数组)中声明double?

如何在 Python 中的二维数组中输入随机生成的整数值

numpy矩阵必须是二维误差

Numpy在二维矩阵上的where()

numpy的二维矩阵乘法

numpy:二维矩阵的逐行乘积

numpy:二维数组矩阵的大小?

如何在 Gurobipy 中定义二维矩阵相乘的目标函数

如何在Java中仅捕获二维矩阵的特定行?

如何在二维矩阵中逐行查找每个元素的频率?

如何在Java中随机将显式值分配给二维数组

C-如何在游戏板(二维阵列)中打印随机单词?

如何在二维数组中只随机选择一种尺寸

从二维矩阵构建 numpy 中的 3 维矩阵的困难

如何从python中的列表创建矩阵或二维列表?

如何交换矩阵二维数组中的元素?

如何在python中使用numpy获取二维矩阵(列表)中具有最多给定元素的列和行的索引

在Python 3中,如何在二维numpy数组中交换两个子数组?

如何在 Java 矩阵(二维数组)中围绕 10 x 10 0 的矩阵制作 1 的“边界”

在二维整数数组中,我们如何在二维数组的完全随机点处放置一个新整数?