用上一个值替换最后一个值 [英] Replace last values by previous value
本文介绍了用上一个值替换最后一个值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一些不完整的三元组:
a = np.arange(10) // 3 + 1
print (a)
[1 1 1 2 2 2 3 3 3 4]
或者:
a1 = np.arange(11) // 3 + 1
print (a1)
[1 1 1 2 2 2 3 3 3 4 4]
最后一个值是4
,但是我需要按以前的值(这里是3
)进行更改,因为不是三倍.
我尝试:
unique, counts = np.unique(a, return_counts=True)
print (unique)
[1 2 3 4]
print (counts)
[3 3 3 1]
a
的预期输出:
[1 1 1 2 2 2 3 3 3 3]
以及a1
:
[1 1 1 2 2 2 3 3 3 3 3]
如果所有三元组都不变,则值不变:
a2 = np.arange(12) // 3 + 1
print (a2)
[1 1 1 2 2 2 3 3 3 4 4 4]
我需要一些常规解决方案,因为三元组应更改为4
或更多.
解决方案
这是一种方法-
def replace_irregular_groupings(a, N=3):
n = len(a)
m = N*(n//N)
if m!=n:
a[m:] = a[m-1]
return a
样品运行-
In [125]: replace_irregular_groupings(np.arange(9) // 3 + 1)
Out[125]: array([1, 1, 1, 2, 2, 2, 3, 3, 3])
In [126]: replace_irregular_groupings(np.arange(10) // 3 + 1)
Out[126]: array([1, 1, 1, 2, 2, 2, 3, 3, 3, 3])
In [127]: replace_irregular_groupings(np.arange(11) // 3 + 1)
Out[127]: array([1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3])
In [128]: replace_irregular_groupings(np.arange(12) // 3 + 1)
Out[128]: array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4])
I have array of uncomplete triples:
a = np.arange(10) // 3 + 1
print (a)
[1 1 1 2 2 2 3 3 3 4]
Or:
a1 = np.arange(11) // 3 + 1
print (a1)
[1 1 1 2 2 2 3 3 3 4 4]
Last value is 4
, but I need change it by previous, here 3
, because not triples.
I try:
unique, counts = np.unique(a, return_counts=True)
print (unique)
[1 2 3 4]
print (counts)
[3 3 3 1]
Expected output for a
:
[1 1 1 2 2 2 3 3 3 3]
and for a1
:
[1 1 1 2 2 2 3 3 3 3 3]
If all triples, no value is changed:
a2 = np.arange(12) // 3 + 1
print (a2)
[1 1 1 2 2 2 3 3 3 4 4 4]
I need some general solution, because triples should be changed to 4
or more.
解决方案
Here's one way -
def replace_irregular_groupings(a, N=3):
n = len(a)
m = N*(n//N)
if m!=n:
a[m:] = a[m-1]
return a
Sample runs -
In [125]: replace_irregular_groupings(np.arange(9) // 3 + 1)
Out[125]: array([1, 1, 1, 2, 2, 2, 3, 3, 3])
In [126]: replace_irregular_groupings(np.arange(10) // 3 + 1)
Out[126]: array([1, 1, 1, 2, 2, 2, 3, 3, 3, 3])
In [127]: replace_irregular_groupings(np.arange(11) // 3 + 1)
Out[127]: array([1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3])
In [128]: replace_irregular_groupings(np.arange(12) // 3 + 1)
Out[128]: array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4])
这篇关于用上一个值替换最后一个值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文