On numpy version 1.0, argmax and max give inconsistent results for an array
of objects. I've seen this problem in both Python native datetime and
mx.DateTime types:
In [22]: print nativeDates
[datetime.datetime(2006, 10, 18, 10, 11, 27), datetime.datetime(2006, 10,
18, 10, 16, 20), datetime.datetime(2006, 10, 18, 10, 21, 23),
datetime.datetime(2006, 10, 18, 10, 31, 13), datetime.datetime(2006, 10, 18,
10, 39, 49), datetime.datetime(2006, 10, 18, 10, 53, 19),
datetime.datetime(2006,
10, 18, 11, 23, 18), datetime.datetime(2006, 10, 18, 17, 18, 43),
datetime.datetime(2006, 10, 18, 17, 21, 49), datetime.datetime(2006, 10, 18,
17, 24, 28), datetime.datetime(2006, 10, 18, 17, 28, 29),
datetime.datetime(2006,
10, 18, 17, 31, 7), datetime.datetime(2006, 10, 18, 17, 36, 26),
datetime.datetime(2006, 10, 19, 10, 17, 45), datetime.datetime(2006, 10, 19,
11, 23, 19), datetime.datetime(2006, 10, 19, 11, 58, 18),
datetime.datetime(2006,
10, 19, 10, 27, 40), datetime.datetime(2006, 10, 19, 13, 17, 14),
datetime.datetime(2006, 10, 19, 13, 21, 17), datetime.datetime(2006, 10, 19,
13, 23, 52), datetime.datetime(2006, 10, 19, 13, 29, 1)]
In [23]: numpy.argmax(nativeDates)
Out[23]: 0
In [24]: numpy.max(nativeDates)
Out[24]: datetime.datetime(2006, 10, 19, 13, 29, 1)
In [25]: nativeDates[0]
Out[25]: datetime.datetime(2006, 10, 18, 10, 11, 27)
I get the same results if I create an array from the list first:
In [28]: dateArr = numpy.array(nativeDates, dtype=object)
In [29]: print dateArr
[2006-10-18 10:11:27 2006-10-18 10:16:20 2006-10-18 10:21:23
2006-10-18 10:31:13 2006-10-18 10:39:49 2006-10-18 10:53:19
2006-10-18 11:23:18 2006-10-18 17:18:43 2006-10-18 17:21:49
2006-10-18 17:24:28 2006-10-18 17:28:29 2006-10-18 17:31:07
2006-10-18 17:36:26 2006-10-19 10:17:45 2006-10-19 11:23:19
2006-10-19 11:58:18 2006-10-19 10:27:40 2006-10-19 13:17:14
2006-10-19 13:21:17 2006-10-19 13:23:52 2006-10-19 13:29:01]
In [30]: numpy.argmax(dateArr)
Out[30]: 0
In [31]: numpy.max(dateArr)
Out[31]: datetime.datetime(2006, 10, 19, 13, 29, 1)
In [32]: dateArr[0]
Out[32]: datetime.datetime(2006, 10, 18, 10, 11, 27)
My guess is that it's related to some underlying memory layout; I've gotten
different results when running this.
Jonathan
|