在 Python 中随机裁剪给定的输入序列?
Randomly Crop a Given Input Sequence in Python?
我想创建一个接受给定长度sequence/list输入的函数
(ex: [48083, 50118, 50118, 39631, 5868, 452, 32, 460, 15, 49, 1028, 4, 252, 32, 460, 15, 49, 1028, 55, 87, 195, 722, 10, 183, 117, 912, 479, 3684, 51, 109, 16, 2788, 124, 8, 556, 8, 95, 33, 333, 732, 2923, 15, 592, 433, 4.])
并且该函数将从输入
输出给定长度的随机序列,比如5
(ex: [48083, 50118, 50118, 39631, 5868] or [479, 3684, 51, 109, 16])
它基本上看起来像这样 -
def foo(x, len):
return ...
x = [48083, 50118, 50118, 39631, 5868, 452, 32, 460, 15, 49]
output_seq = foo(x, 5) # [39631, 5868, 452, 32, 460]
output_seq = foo(x, 5) # [452, 32, 460, 15, 49]
output_seq = foo(x, 5) # [50118, 50118, 39631, 5868, 452]
这可以在 python3x 中完成吗?任何帮助将不胜感激?
你可以只使用 random.sample(x, len)
:
x = [48083, 50118, 50118, 39631, 5868, 452, 32, 460, 15, 49]
print(random.sample(x, 5))
print(random.sample(x, 5))
print(random.sample(x, 5))
输出:
[50118, 39631, 48083, 460, 452]
[452, 50118, 15, 49, 48083]
[15, 452, 48083, 50118, 39631]
您的问题归结为随机选择起始索引。您需要确保索引在末尾提供足够的空间来包含您想要的长度,该长度介于 0
和列表长度减去大小之间:
import random
l = [48083, 50118, 50118, 39631, 5868, 452, 32, 460, 15, 49, 1028, 4, 252, 32, 460, 15, 49, 1028, 55, 87, 195, 722, 10, 183, 117, 912, 479, 3684, 51, 109, 16, 2788, 124, 8, 556, 8, 95, 33, 333, 732, 2923, 15, 592, 433, 4.]
def foo(x, size):
start = random.randint(0, len(x) - size)
return x[start: start+size]
foo(l, 5)
# [109, 16, 2788, 124, 8]
foo(l, 5)
# [10, 183, 117, 912, 479]
我想创建一个接受给定长度sequence/list输入的函数
(ex: [48083, 50118, 50118, 39631, 5868, 452, 32, 460, 15, 49, 1028, 4, 252, 32, 460, 15, 49, 1028, 55, 87, 195, 722, 10, 183, 117, 912, 479, 3684, 51, 109, 16, 2788, 124, 8, 556, 8, 95, 33, 333, 732, 2923, 15, 592, 433, 4.])
并且该函数将从输入
输出给定长度的随机序列,比如5(ex: [48083, 50118, 50118, 39631, 5868] or [479, 3684, 51, 109, 16])
它基本上看起来像这样 -
def foo(x, len):
return ...
x = [48083, 50118, 50118, 39631, 5868, 452, 32, 460, 15, 49]
output_seq = foo(x, 5) # [39631, 5868, 452, 32, 460]
output_seq = foo(x, 5) # [452, 32, 460, 15, 49]
output_seq = foo(x, 5) # [50118, 50118, 39631, 5868, 452]
这可以在 python3x 中完成吗?任何帮助将不胜感激?
你可以只使用 random.sample(x, len)
:
x = [48083, 50118, 50118, 39631, 5868, 452, 32, 460, 15, 49]
print(random.sample(x, 5))
print(random.sample(x, 5))
print(random.sample(x, 5))
输出:
[50118, 39631, 48083, 460, 452]
[452, 50118, 15, 49, 48083]
[15, 452, 48083, 50118, 39631]
您的问题归结为随机选择起始索引。您需要确保索引在末尾提供足够的空间来包含您想要的长度,该长度介于 0
和列表长度减去大小之间:
import random
l = [48083, 50118, 50118, 39631, 5868, 452, 32, 460, 15, 49, 1028, 4, 252, 32, 460, 15, 49, 1028, 55, 87, 195, 722, 10, 183, 117, 912, 479, 3684, 51, 109, 16, 2788, 124, 8, 556, 8, 95, 33, 333, 732, 2923, 15, 592, 433, 4.]
def foo(x, size):
start = random.randint(0, len(x) - size)
return x[start: start+size]
foo(l, 5)
# [109, 16, 2788, 124, 8]
foo(l, 5)
# [10, 183, 117, 912, 479]