随机删除两个 numpy 数组中的列
randomly dropping columns in two numpy arrays in unison
我有两个 numpy 数组。一个 numpy 数组是形状为 (200,x) 的二维数组,其中 x 可以是正整数。另一个数组是形状为 (x,) 的一维数组,其中 x 与二维 numpy 数组相同。如果 2D 数组的第二维大于 1000 以使其大小为 (200,1000),我想同时随机删除两个数组中的列,并且相应的 1D 数组也将是 (1000,)。我知道我可以使用 np.delete 但我不知道如何确保随机删除列,使二维数组的第二维为 1000,一维数组的长度也为 1000。
将不胜感激。
您需要做的就是先决定要 keep/drop 的列。然后 keep/drop 来自两个数组的那些列。您有 x
列。您想 select 随机选择其中的任意 1000 个。
从 Generate 'n' unique random numbers within a range 开始,您可以在 [0, x)
.
范围内创建列索引列表
import random
sel_cols = random.sample(range(x), 1000)
接下来,您可以 select 来自 numpy 数组的这些列:
downsized_matrix = original_matrix[:, sel_cols]
downsized_vector = original_vector[sel_cols]
我有两个 numpy 数组。一个 numpy 数组是形状为 (200,x) 的二维数组,其中 x 可以是正整数。另一个数组是形状为 (x,) 的一维数组,其中 x 与二维 numpy 数组相同。如果 2D 数组的第二维大于 1000 以使其大小为 (200,1000),我想同时随机删除两个数组中的列,并且相应的 1D 数组也将是 (1000,)。我知道我可以使用 np.delete 但我不知道如何确保随机删除列,使二维数组的第二维为 1000,一维数组的长度也为 1000。 将不胜感激。
您需要做的就是先决定要 keep/drop 的列。然后 keep/drop 来自两个数组的那些列。您有 x
列。您想 select 随机选择其中的任意 1000 个。
从 Generate 'n' unique random numbers within a range 开始,您可以在 [0, x)
.
import random
sel_cols = random.sample(range(x), 1000)
接下来,您可以 select 来自 numpy 数组的这些列:
downsized_matrix = original_matrix[:, sel_cols]
downsized_vector = original_vector[sel_cols]