gpt4 book ai didi

python - 将 numpy 数组分解为具有相同值的较小数组 [Python]

转载 作者:行者123 更新时间:2023-11-28 21:36:17 26 4
gpt4 key购买 nike

我有以下 numpy 数组:

array=[1,1,1,1,2,2,3,3,3,5,6,6,6,6,6,6,7]

我需要将此数组分解为具有相同值的较小数组,例如

[1,1,1,1] and [3,3,3]

我的代码如下,但它不起作用:

def chunker(seq, size):
return (seq[pos:pos + size] for pos in range(0, len(seq)-size))
counter=0
sub_arr=[]
arr=[]
for i in range(len(array)):
if(array[i]==array[i+1]):
counter+=1
else:
break
subarr=chunker(array,counter)
arr.append(sub_arr)
array=array[counter:]

将数组分解为相等/相同值的较小数组的有效方法是什么?

最佳答案

float 和整数的 numpy 解决方案:

import numpy as np
a = np.asarray([1,1,1,1,2,2,3,3,3,5,6,6,6,6,6,6,7])
#calculate differences between neighbouring elements and get index where element changes
#sample output for index would be [ 4 6 9 10 16]
index = np.where(np.diff(a) != 0)[0] + 1
#separate arrays
print(np.split(a, index))

示例输出:

[array([1, 1, 1, 1]), array([2, 2]), array([3, 3, 3]), array([5]), array([6, 6, 6, 6, 6, 6]), array([7])]

如果你有字符串,这个方法自然行不通。那么您应该采用 DyZ 的 itertools 方法。

关于python - 将 numpy 数组分解为具有相同值的较小数组 [Python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51256637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com