如何根据数组中的值拆分数组?

2024-10-04 05:31:53 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上我有一个数据数组,我想根据数组的最小值分成2个。我尝试了一个for循环,但它根据值的大小将其拆分,而不是有效地将其拆分到该值的左侧或右侧。我想我在寻找一些有效的东西,比如numpy中的分割模块,但是它返回两个独立的独立数组,而不是一个包含子数组的数组

node1=[]
node2=[]
for i in profile_coarse:
    if i<7.2e-10: 
        node1.append(i)
    else:
        node2.append(i)

显然,因为7.2e-10是最小值,所以所有的值都会转到node2,而node1仍然是一个空数组。最小值位于我的数据数组的中间,我希望它之前的所有内容都存储在NoDE1中,并且在NoDE2之后的所有内容。我模模糊糊地知道np.where是什么,但我似乎不能在这里正确地应用它。如何改变if循环的条件,使其工作? 非常感谢你的帮助

编辑: 利用数组索引的思想,我得到了:

 node1=[]
 node2=[]
for index in enumerate(profile_coarse):
    if i<get_lowest_minima(profile_coarse)[0]:                        
        node1.append(i)
    else:
        node2.append(i)
print("array node1", node1, "array node2", node2)

这不起作用-它填充了node1数组,使node2为空…我不明白为什么。get_lowest_minima(profile_rough)[0]位是元组的整数元素,profile_rough是我的数据数组。救命啊


Tags: 数据in内容forgetif数组profile
2条回答

以下是一个简单的解决方案:

split_index = data.index(min(data))
data1 = data[:split_index]
data2 = data[split_index+1:]

您还可以找到带有以下内容的split_index

split_index = min(range(len(data)), key=data.__getitem__)

有关更多详细信息,请查看this问题

您需要的是找到最小值的索引,然后根据该索引拆分数组

import numpy as np


a = np.random.randint(0, 255, 10). # sample data [  9  33 155  48 196   3  96 185 112 104]

min_index = np.argmin(a)

node1 = a[:min_index]  # [  9  33 155  48 196]
node2 = a[min_index:]  # [  3  96 185 112 104]

相关问题 更多 >