基于另一个数组中的值从一个数组创建多个数组-python
情况如下: 假设我有两个数组,x和y: 输入: 预期产出:基于另一个数组中的值从一个数组创建多个数组-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
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]]