Почему бы просто не иметь одну функцию с несколькими ветвями? Это позволит избежать форматирования строки, и вы можете вызывать другие функции, если не хотите помещать все логи c в одну функцию. Вы пробовали это и нашли, если проверки слишком медленные?
Этот код показывает, как вы могли бы разбить его, имея основную функцию, которая принимает два аргумента и либо запускает соответствующий код, либо вызывает подфункцию.
import numpy as np
a = np.array([[12, 0, 0, 0, 0], [0, 1, 4, 1, 0], [2, 8, 2, 0, 0], [6, 3, 5, 1, 0]])
def main_func(c2_val, c3_val):
if c3_val == 0:
print("called with col3 value of 0")
# code for func you would call i.e.
a[c3_val, 1] = a[c3_val, 1] + 2
elif c3_val == 4: # on if for each possible outcome
# or have it call another function
func4()
# etc
def func4():
print("called with col3 value of 4")
for row in a:
print(row)
main_func(row[1], row[2])
Примечание. Если вы Вы действительно беспокоитесь о времени выполнения, и некоторые значения, скорее всего, не забудьте поставить их выше, так что нужно меньше проверок.