не уверен, если вы говорите LinqToSql или просто linq ... но вы можете использовать регулярные выражения следующим образом:
.Where(dto => System.Text.RegularExpressions.Regex.IsMatch(dto.CustomerName, @"Ad"));
Да, вот ответ, учитывая массив NumPy, array
, и значение, item
, для поиска:
itemindex = numpy.where(array==item)
результатом является кортеж с первым все индексы строки, затем все индексы столбца.
, Например, если бы массив является двумя размерами и он содержал Ваш объект в двух местах затем
array[itemindex[0][0]][itemindex[1][0]]
, было бы равно Вашему объекту, и так будет
array[itemindex[0][1]][itemindex[1][1]]
Для индексации на любых критериях Вы можете так что-то как следующее:
In [1]: from numpy import *
In [2]: x = arange(125).reshape((5,5,5))
In [3]: y = indices(x.shape)
In [4]: locs = y[:,x >= 120] # put whatever you want in place of x >= 120
In [5]: pts = hsplit(locs, len(locs[0]))
In [6]: for pt in pts:
.....: print(', '.join(str(p[0]) for p in pt))
4, 4, 0
4, 4, 1
4, 4, 2
4, 4, 3
4, 4, 4
И вот быстрая функция, чтобы сделать то, что делает list.index (), кроме не повышает исключение, если это не найдено. Остерегайтесь - это, вероятно, очень медленно на больших массивах. Вы можете, вероятно, патч обезьяны это на массивах, если Вы использовали бы его в качестве метода.
def ndindex(ndarray, item):
if len(ndarray.shape) == 1:
try:
return [ndarray.tolist().index(item)]
except:
pass
else:
for i, subarray in enumerate(ndarray):
try:
return [i] + ndindex(subarray, item)
except:
pass
In [1]: ndindex(x, 103)
Out[1]: [4, 0, 3]
Существует много операций в NumPy, который мог, возможно, быть соединен для выполнения этого. Это возвратит индексы элементов, равных объекту:
numpy.nonzero(array - item)
Вы могли тогда взять первые элементы списков для получения единственного элемента.
Если Вы собираетесь использовать это в качестве индекса во что-то еще, можно использовать булевы индексы, если массивы broadcastable; Вам не нужны явные индексы. Абсолютный самый простой способ сделать это должно просто индексировать на основе значения истинности.
other_array[first_array == item]
Любые работы логической операции:
a = numpy.arange(100)
other_array[first_array > 50]
ненулевой метод берет булевские переменные, также:
index = numpy.nonzero(first_array == item)[0][0]
Эти два нуля для кортежа индексов (принимающий first_array, 1D), и затем первый объект в массиве индексов.
Если вам нужен индекс первого вхождения только одного значения , вы можете использовать ненулевое значение
(или где
, что в данном случае означает то же самое):
>>> t = array([1, 1, 1, 2, 2, 3, 8, 3, 8, 8])
>>> nonzero(t == 8)
(array([6, 8, 9]),)
>>> nonzero(t == 8)[0][0]
6
Если вам нужен первый индекс каждого из многих значений , вы, очевидно, можете повторять то же самое, что и выше, но есть уловка, которая может быть Быстрее. Следующая команда находит индексы первого элемента каждой подпоследовательности :
>>> nonzero(r_[1, diff(t)[:-1]])
(array([0, 3, 5, 6, 7, 8]),)
Обратите внимание, что она находит начало обеих подпоследовательностей из 3 и обеих подпоследовательностей из 8:
[ 1 , 1, 1, 2 , 2, 3 , 8 , 3 , 8 , 8]
Таким образом, это немного отличается от поиска первого появления каждого значения. В своей программе вы можете работать с отсортированной версией t
, чтобы получить то, что вы хотите:
>>> st = sorted(t)
>>> nonzero(r_[1, diff(st)[:-1]])
(array([0, 3, 5, 7]),)