# Calculating minima values for each column of given data

Can anyone help make this perform faster?

import numpy as np
from scipy import signal

d0 = np.random.random_integers(10, 12, (5,5))
d1 = np.random.random_integers(1, 3, (5,5))
d2 = np.random.random_integers(4, 6, (5,5))
d3 = np.random.random_integers(7, 9, (5,5))
d4 = np.random.random_integers(1, 3, (5,5))
d5 = np.random.random_integers(13, 15, (5,5))

data = np.array([d0,d1,d2,d3,d4,d5])  ####THIS SHAPE IS GIVEN, WHICH CAN NOT BE CHANGED.
data = data.reshape(6,25)

data = data.T
minimas=[]
for x in data:
minima = signal.argrelmin(x, axis=0)
minimas.append(x[minima])

print minimas    ####THIS SHAPE IS GIVEN, WHICH CAN NOT BE CHANGED.

• Why do you need that particular output shape? – Winston Ewert May 15 '14 at 15:54

You can avoid the loop by computing minima along axis 1 of the data array.
minima = signal.argrelmin(data, axis=1)

• @alps Actually, reshape docs state that sometimes it does copy the array, for example when reshaping after transposing. I'm not sure about splitting and stacking; I presume stacking involves copying at least in the general case. – Janne Karila May 15 '14 at 9:53