Самый простой способ - изменить его форму и применить функцию вдоль оси.
import numpy as np
a = np.arange(12)**2
b = a.reshape(4,3)
print np.std(b, axis=1)
Если вам нужна чуть лучшая производительность, , вы можете попробовать stride_tricks . Ниже то же самое, что и выше, за исключением использования stride_tricks. Я ошибся в увеличении производительности, потому что, как вы можете видеть ниже, b
становится точно таким же, как и b
выше. Я не удивлюсь, если они составят одно и то же.
import numpy as np
a = np.arange(12)**2
b = np.lib.stride_tricks.as_strided(a, shape=(4,3), strides=(a.itemsize*3, a.itemsize))
print np.std(b, axis=1)