Home > database >  Check numerically if numbers in array start with given digits
Check numerically if numbers in array start with given digits

Time:08-31

I have a numpy array of integers a and an integer x. For each element in a I want to check whether it starts with x (so the elements of a usually have more digits than x, but that's not guaranteed for every element).

I was thinking of converting the integers to strings and then checking it with enter image description here enter image description here

CodePudding user response:

You can use numpy.char.startswith as an alternative.

import numpy as np

a = np.array([4141, 4265, 4285, 4, 41656])
x = 42

res = np.char.startswith(a.astype(str), str(x))
print(res)
# [False  True  True False False]

CodePudding user response:

Numerically, the number n = xy...z matches the prefix m = uv...w if, after dividing n by a suitable power of 10 to get the same number of digits, n/10^k = m (integer division).

You have the option of determining k by trial and error (linear search or even dichotomic search), but this is not efficient. Another option is to use logarithms to find the number of digits of n and m.

I would not call such a solution elegant.

  • Related