日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 一维数组所有元素是否大于_如何最好在python中将一维数组连续元素分组...

發布時間:2024/10/8 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 一维数组所有元素是否大于_如何最好在python中将一维数组连续元素分组... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我有以下一維數組:

[0, 0, 0, 1, 0, 0, 16, 249, 142, 149, 189, 135, 141, 146, 294, 3, 2, 0, 3, 3, 6, 2, 3, 4, 21, 22, 138, 95, 86, 110, 72, 89, 79, 138, 14, 18, 18, 18, 12, 15, 21, 22, 11, 20, 26, 90, 62, 128, 94, 117, 81, 81, 137, 7, 13, 14, 6, 10, 8, 11, 10, 13, 21, 18, 140, 69, 147, 110, 112, 88, 100, 197, 9, 20, 5, 6, 5, 4, 7, 10, 21, 32, 42, 56, 41, 156, 95, 112, 81, 93, 152, 14, 19, 9, 12, 20, 18, 14, 21, 18, 18, 14, 91, 47, 43, 63, 41, 45, 43, 85, 15, 16, 14, 10, 11]

我可以看到尖峰所在的模式。所以我想上面的數組分組如下:

[[0, 0, 0, 1, 0, 0, 16], [249, 142, 149, 189, 135, 141, 146, 294], [3, 2, 0, 3, 3, 6, 2, 3, 4, 21, 22], [138, 95, 86, 110, 72, 89, 79, 138]....so on]

我嘗試使用K均值,均值和標準偏差的某種組合。但是,沒有一個導致這種分組。請幫忙!

編輯:這些數據是沿x軸的灰度圖像的暗像素值的總和,在y軸上相加。較高的范圍組代表寫行,而較低的范圍組代表空白行。這意味著,我想將圖像上的書面行和空白行分開。因此有一種模式。寫入的線將具有相同的寬度,即它們的組長度將相同。由于背景噪聲,空白行可能會突然出現尖峰。但總體而言,我可以手動看到空白行的模式。我需要以編程方式。

解決方案

在這種情況下,將使用基于閾值的簡單方法。

x = np.array([0, 0, 0, 1, 0, 0, 16, 249, 142, 149, 189, 135, 141, 146, 294, 3, 2,

0, 3, 3, 6, 2, 3, 4, 21, 22, 138, 95, 86, 110, 72, 89, 79, 138, 14,

18, 18, 18, 12, 15, 21, 22, 11, 20, 26, 90, 62, 128, 94, 117, 81,

81, 137, 7, 13, 14, 6, 10, 8, 11, 10, 13, 21, 18, 140, 69, 147,

110, 112, 88, 100, 197, 9, 20, 5, 6, 5, 4, 7, 10, 21, 32, 42, 56,

41, 156, 95, 112, 81, 93, 152, 14, 19, 9, 12, 20, 18, 14, 21, 18,

18, 14, 91, 47, 43, 63, 41, 45, 43, 85, 15, 16, 14, 10, 11])

mask = x > 30 # Mark values above/below threshold

cuts = np.flatnonzero(np.diff(mask)) # find indices where mask changes

cuts = np.hstack([0, cuts + 1, -1]) # let indices point after the change and add beginning and end of the array.

groups = []

for a, b in zip(cuts[:-1], cuts[1:]): # iterate over index pairs

groups.append(x[a:b].tolist())

print(groups)

# [[0, 0, 0, 1, 0, 0, 16], [249, 142, 149, 189, 135, 141, 146, 294], [3, 2, 0, 3, 3, 6, 2, 3, 4, 21, 22], [138, 95, 86, 110, 72, 89, 79, 138], [14, 18, 18, 18, 12, 15, 21, 22, 11, 20, 26], [90, 62, 128, 94, 117, 81, 81, 137], [7, 13, 14, 6, 10, 8, 11, 10, 13, 21, 18], [140, 69, 147, 110, 112, 88, 100, 197], [9, 20, 5, 6, 5, 4, 7, 10, 21], [32, 42, 56, 41, 156, 95, 112, 81, 93, 152], [14, 19, 9, 12, 20, 18, 14, 21, 18, 18, 14], [91, 47, 43, 63, 41, 45, 43, 85], [15, 16, 14, 10]]

更復雜的方法可能涉及擬合分段常數模型或檢測統計不平穩性,但是通常最好堅持使用最簡單可行的方法。

總結

以上是生活随笔為你收集整理的python 一维数组所有元素是否大于_如何最好在python中将一维数组连续元素分组...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。