У меня есть большой массив, и часть этого показана в небольшом примере ниже. в каждом списке, первое число начинается, а второе число - (поэтому существует диапазон), но каждый элемент является частью последовательности и каждая последовательность начинается с нуля. . что я хочу сделать, это:Сплит-элементы в массиве numpy
небольшой пример:
array([[ 469, 1300],
[ 171, 1440],
[ 187, 1564],
[ 204, 1740],
[ 40, 1363],
[ 56, 1457],
[ 132, 606],
[1175, 2096],
[ 484, 2839],
[ 132, 4572],
[ 166, 1693],
[ 69, 3300],
[ 142, 1003],
[2118, 2118],
[ 715, 1687],
[ 301, 1006],
[ 48, 2142],
[ 63, 330],
[ 479, 2411]], dtype=uint32)
Я хочу взять из начала каждой последовательности, которая индексируется 0 (не входит в диапазонах) до -20 до того самого начала каждого диапазона.
Я попробовал этот код:
cds = np.column_stack([cdspos[:, 0] - cdspos[:, 0], cdspos[:, 0] - 20])
, но он дает эту ошибку:
y = _nx.arange(0, num, dtype=dt)
MemoryError
но попробовать это:
cds = np.column_stack([cdspos[:, 0] - 100, cdspos[:, 0] - 20])
она прекрасно работает. проблема в том, что я не имею того же диапазона перед отправной точкой (все они не 100).
поэтому, я хочу получить меньшие диапазоны (списки) следующим образом: (0) до (начало-20). например, первый элемент будет выглядеть так:
[ 0, 449]
Я также попытался
cds = np.column_stack([0, cdspos[:, 0] - 20])
, но не работает.
для небольшого примера, выход Ищу бы так:
array([[0, 449],
[0, 151],
[0, 167],
[0, 184],
[0, 20],
[0, 36],
[0, 112],
[0, 1155],
[0, 464],
[0, 112],
[0, 146],
[0, 49],
[0, 122],
[0, 2098],
[0, 695],
[0, 281],
[0, 28],
[0, 43],
[0, 459]], dtype=uint32)
вы, ребята, знаете, как это сделать?
Я попытался это и работал отлично: CDS1 = np.column_stack ([np.zeros (LEN (cdspos), DTYPE = "uint32"), cdspos [: , 1]]) – user3631908