gpt4 book ai didi

python - 在满足峰值的地方拆分数组

转载 作者:行者123 更新时间:2023-12-04 08:54:02 24 4
gpt4 key购买 nike

希望做得好。
我有一个非常大的 numpy 数组,想把它分成几个。我的数组有三列,我想在所有列都达到最大值的地方拆分它:

array = [[0, 0, 0],
[0, 0, 5],
[10, 5, 10],
[1, 1, 1],
[5, 5, 15],
[10, 8, 20],
[2, 0, 0],
[10, 10, 12],
[1, 2, 0],
[2, 5, 9]]
现在,我想把它分成四个数组:
sub_array_1=[[0, 0, 0],
[0, 0, 5],
[10, 5, 10]]
sub_array_2=[[1, 1, 1],
[5, 5, 15],
[10, 8, 20]]
sub_array_3=[[2, 0, 0],
[10, 10, 12]]
sub_array_4=[[1, 2, 0],
[2, 5, 9]]
我尝试在 for 循环中使用 if 语句,当我的输入的每个元素都大于存储在上下行中的元素时,给我一个数组。我还应该弄清楚最后一行:
import numpy as np    
sub_array_1=np.array([])
for i in array:
if array[i,:]>array[i+1,:] and array[i,:]>array[i+1,:]:
vert_1=np.append(sub_array_1,array[0:i,:])
我的代码不起作用,但它只是展示了我的想法。
我对 Python 很陌生,我找不到将我的想法写成代码的方法。所以,我感谢任何帮助和贡献。
干杯,
阿里

最佳答案

IIUC,一种使用方式 numpy.diffnumpy.array_split :

indices = np.argwhere(np.all(np.diff(array, axis=0) < 0, axis=1))
np.array_split(array, indices.ravel()+1, axis=0)
输出:
[array([[ 0,  0,  0],
[ 0, 0, 5],
[10, 5, 10]]),
array([[ 1, 1, 1],
[ 5, 5, 15],
[10, 8, 20]]),
array([[ 2, 0, 0],
[10, 10, 12]]),
array([[1, 2, 0],
[2, 5, 9]])]
  • np.allnp.diff找到一行的所有元素作为与下一行的负差(即峰值结束的地方)
  • np.array_split然后将根据找到的峰值位置拆分给定数组。
  • 关于python - 在满足峰值的地方拆分数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63941274/

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