所以我确实有这个NumPy数组结果(最终),我想减少它,我的意思是,如果值重复,那么我想删除第一个值,并保持第二个、第三个值重复,依此类推……
import hmac
import hashlib
import time
from argparse import _MutuallyExclusiveGroup
from tkinter import *
import pandas as pd
import base64
import matplotlib.pyplot as plt
import numpy as np
key="800070FF00FF08012"
key=bytes(key,'utf-8')
collision=[]
for x in range(1,1000001):
msg=bytes(f'{x}','utf-8')
digest = hmac.new(key, msg,"sha256").digest()
code = base64.b64encode(digest).decode('utf-8')
code=code[:6]
key=key.replace(key,digest)
collision.append(code)
df=pd.DataFrame(collision)
df=df[df.duplicated(keep=False)]
df_index=df.index.to_numpy()
df=df.values.flatten()
final=np.stack((df_index,df),axis=1)
Results of the variable "final":
I HAVE:
[[14093 'JRp1kX']
[43985 'KGlW7X']
[59212 'pU97Tr']
[90668 'ecTjTB']
[140615 'JRp1kX']
[218480 '25gtjT']
[344174 'dtXg6E']
[380467 'DdHQ3M']
[395699 'vnFw/c']
[503504 'dtXg6E']
[531073 'KGlW7X']
[633091 'ecTjTB']
[671091 'vnFw/c']
[672111 '25gtjT']
[785568 'pU97Tr']
[991540 'DdHQ3M']
[991548 'JRp1kX']]
And I WANT TO HAVE:
[[140615 'JRp1kX']
[503504 'dtXg6E']
[531073 'KGlW7X']
[633091 'ecTjTB']
[671091 'vnFw/c']
[672111 '25gtjT']
[785568 'pU97Tr']
[991540 'DdHQ3M']
[991548 'JRp1kX']]
消除数组中重复的第一个值。有没有人有对我的案子有用的代码?
更简单地说,如果你有这个列表[1,2,3,4,5,1,3,5,5],我希望有[2,4,1,3,5,5]
4条答案
按热度按时间nzk0hqpo1#
nbysray52#
final
是一个数值数组,因此您可以在第二列上使用np.unique
来获取第一次出现的索引和出现的次数,以避免删除单个值这将适用于
ndarray
,对于您的第二个一维阵列示例,请使用7uzetpgm3#
也许你可以创建
for
周期。在第一个循环中不能立即使用
del
,因为i
将迭代下一个数字,这将导致每次删除一个数字时都会跳过数字。[i - removed_count]
,因为每次删除较低的索引,较高的索引都会立即减少1。我认为它可以用更有效的方式写,但这应该会起作用,也许只需稍作修改。
cbwuti444#
生成df后,添加以下行: