Скажем, у нас есть два массива:
arr = np.array([
[
[1, 2, 3],
[4, 5, 6],
[7, -8, 9],
[10, 11, 12]
],
[
[13, 14, -15],
[16, -17, 18],
[19, 20, 21],
[22, 23, 24]
]
])
и
comp = np.array([
[2, 20, 4],
[3, 8, 15]
])
Я пытаюсь сравнить каждый одномерный массив comp
с двумерным массивом arr
(по строкам), т.е.
[2, 20, 4] > [1, 2, 3] = [1 1 1]
если следующая строка не удовлетворяет условию, аннулируйте comp
, а затем сравните его:
[-2, 20, -4], [4, 5, 6] = [-1 1 -1]
если больше ничего не удовлетворяет, поставьте 0
А для второго образца из arr
он должен сравниваться со вторым 1D из comp
, т.е.:
[2, 20, 4], [13, 14, -15] = [...]
Значит, должно быть что-то вроде
[
[
[1 1 1]
[-1 1 -1]
...
]
[
[...]
[...]
]
]
Я пытался сделать что-то вроде этого:
for sample in arr:
for row in sample:
print(np.where(np.greater(row, comp), 1, np.where(np.less(row, -comp), -1, 0)))
Но этот код сравнивает полный массив comp
с arr[0][#]
и a[1][#]
(альтернативно).
Как мне сделать этот ряд мудрым?
Обновление:
Это правильный способ сделать это?:
for idx, sample in enumerate(arr):
print(np.where(np.greater(sample, comp[idx]), 1, np.where(np.less(sample, -comp[idx]), -1, 0)))