0
我剛剛開始使用Cython,並希望瞭解如何處理此過程的一些指示。我已經確定了代碼中的速度瓶頸,並希望優化特定操作的性能。Cythonizing應用於熊貓的字符串數組比較函數DataFrame
我有一個熊貓據幀trades
,看起來像這樣:
Codes Price Size
Time
2015-02-24 15:30:01-05:00 R6,IS 11.6100 100
2015-02-24 15:30:01-05:00 R6,IS 11.6100 100
2015-02-24 15:30:01-05:00 R6,IS 11.6100 100
2015-02-24 15:30:01-05:00 11.6100 375
2015-02-24 15:30:01-05:00 R6,IS 11.6100 100
... ... ... ...
2015-02-24 15:59:55-05:00 R6,IS 11.5850 100
2015-02-24 15:59:55-05:00 R6,IS 11.5800 200
2015-02-24 15:59:55-05:00 T 11.5850 100
2015-02-24 15:59:56-05:00 R6,IS 11.5800 175
2015-02-24 15:59:56-05:00 R6,IS 11.5800 225
[5187 rows x 3 columns]
我有一個numpy
陣列叫codes
:
array(['4', 'AP', 'CM', 'BP', 'FA', 'FI', 'NC', 'ND', 'NI', 'NO', 'PT',
'PV', 'PX', 'SD', 'WO'],
dtype='|S2')
我需要過濾trades
這樣,如果任何一個值,在codes
包含在trades['Codes']
中,該行被排除。目前我正在這樣做:
ix = trades.Codes.str.split(',').apply(lambda cs: not any(c in excludes for c in cs))
trades = trades[ix]
但是,這太慢了,我需要加快速度。我想用用Cython(如描述here也許numba,好像用Cython是更好的選擇
基本上,我需要這樣的功能:cythonizing當
def isinCodes(codes_array1, codes_array2):
for x in codes_array1:
for y in codes_array2:
if x == y: return True
return False
做什麼類型的,我需要使用?
爲什麼不使用set.intersection? –
你的算法是二次的,cython不會幫助那麼多 –