Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于另一个数组中的值从一个数组创建多个数组-python_Python_Arrays - Fatal编程技术网

基于另一个数组中的值从一个数组创建多个数组-python

基于另一个数组中的值从一个数组创建多个数组-python,python,arrays,Python,Arrays,情况如下: 假设我有两个数组,x和y: 输入: 预期产出: arr1 = [2,3,4,5] arr2 = [6,7,8] arr3 = [9,10,11,12] 我想创建一个python脚本,它可以让我根据数组y的值作为端点将数组x拆分为多个数组 在这个例子中,x将在2和6之间,然后在6和9之间,然后在9和13之间分开 我不知道如何开始,我是一个初学者。我会很感激你的帮助,我很想知道你是如何解决这个问题的?谢谢大家! 对于排序的x,我们可以使用with来拆分x,使用y包含在x中的索引: im

情况如下:

假设我有两个数组,x和y: 输入:

预期产出:

arr1 = [2,3,4,5]
arr2 = [6,7,8]
arr3 = [9,10,11,12]
我想创建一个python脚本,它可以让我根据数组y的值作为端点将数组x拆分为多个数组

在这个例子中,x将在2和6之间,然后在6和9之间,然后在9和13之间分开


我不知道如何开始,我是一个初学者。我会很感激你的帮助,我很想知道你是如何解决这个问题的?谢谢大家!

对于排序的
x
,我们可以使用with来拆分
x
,使用
y
包含在
x
中的索引:

import numpy as np

i = np.searchsorted(x, y)
np.split(x,i+1)[1:-1]
# [array([3, 4, 5, 6]), array([7, 8, 9]), array([10, 11, 12, 13])]

您的预期输出有点不一致,或者我不了解其背后的模式,但这将使您接近您想要的

x = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
y = [2,6,9,13]

m = []

for i in range(len(y) - 1):
    m += [x[y[i] - 1:y[i+1] - 1]]

print(m)
输出

[[2, 3, 4, 5], [6, 7, 8], [9, 10, 11, 12]]

根据y中的值查找x的索引,然后使用索引

arr = []
for i in range(len(y)-1):
    arr.append(x[x.index(y[i]):x.index(y[i+1])])

arr

[[2, 3, 4, 5], [6, 7, 8], [9, 10, 11, 12]]
如果阵列中存在重复项,则此操作有效

x = [2,3,4,5,6,7,7,8,9,9,10,11,11,12,13,14,15]
y = [2,6,9,13]

arr = []
for i in range(len(y)-1):
    arr.append(x[x.index(y[i]):x.index(y[i+1])])

[[2, 3, 4, 5], [6, 7, 7, 8], [9, 9, 10, 11, 11, 12]]

您能为我们定义规则吗?在arr1中,2是起点,而在arr2和arr3中,9和13是YS的终点。那么,arr1不应该等于[2,3,4,5,6],因为我知道您在y中的值应该决定输出列表的结束/开始值!刚刚纠正了我的缺点!是的,我修复了响应该代码根本不查看y中的值,请尝试使用相同的代码对x=[2,3,4,5,6,7,8,9,10,11,12,13,14,15]进行更新。同样的想法,但通过searchsorted@vaishalt查找索引这段代码根本不看y中的值,尝试用x=[2,3,4,5,6,7,8,9,10,11,12,13,14,15]的相同代码,但会将它们解释为索引,该示例对预期的内容有点模糊。
x = [2,3,4,5,6,7,7,8,9,9,10,11,11,12,13,14,15]
y = [2,6,9,13]

arr = []
for i in range(len(y)-1):
    arr.append(x[x.index(y[i]):x.index(y[i+1])])

[[2, 3, 4, 5], [6, 7, 7, 8], [9, 9, 10, 11, 11, 12]]