2015-12-26 4 views
0

Я использую библиотеку scipy для вычисления t-tests, и я пытаюсь понять, почему из одного вызова функции будет несколько типов возврата. Он меня поймал, как в разных средах, он возвращает разные объекты.Несколько типов возврата из одной функции scipy

Например, локально я получаю:

rvs1 = stats.norm.rvs(loc=5,scale=10,size=500) 
rvs2 = stats.norm.rvs(loc=5,scale=10,size=500) 
stats.ttest_ind(rvs1,rvs2) 
(0.26833823296239279, 0.78849443369564776) 
stats.ttest_ind(rvs1,rvs2, equal_var = False) 
(0.26833823296239279, 0.78849452749500748) 

что и он показывает на примере на их сайте. Тем не менее, когда он работает на CircleCI (непрерывная интеграция услуг) в виртуальной машине я получаю:

rvs1 = stats.norm.rvs(loc=5,scale=10,size=500) 
rvs2 = stats.norm.rvs(loc=5,scale=10,size=500) 
stats.ttest_ind(rvs1,rvs2) 
(array(-1.603223040889008), 0.10920183417176929) 
stats.ttest_ind(rvs1,rvs2, equal_var = False) 
(array(-1.603223040889008), 0.10920185489799822) 

, где первый элемент кортежа теперь массив!

Почему эти разные типы возврата кажутся почти взаимозаменяемыми? Это для обратной совместимости (хотя на сервере и на локальном компьютере работает 0.14.0)? Как это может повлиять на окружающую среду?

я в конечном итоге решить ее запуском:

np.array(stats.ttest_ind(rvs1,rvs2)) 

, которые превращают его в единый массив из двух элементов.

Как интересно, поскольку я вхожу в лучшее решение этой проблемы, я хотел бы понять, почему существуют разные типы возвращаемых данных из одной функции и почему она была разработана как таковая?

+0

Покажите нам версии 'numpy' и' python', а также 'scipy'. Это может быть побочным эффектом некоторых других изменений кода. – hpaulj

+0

python: 2.7.11 & numpy: 1.8.1 – Rambatino

+0

Как упоминалось в hpauj, расскажите нам о скудных версиях, работающих как на локальном компьютере, так и на пульте дистанционного управления. Скорее всего, будет разница в обоих. Между этими двумя версиями изменение, скорее всего, привело к изменению типов вывода. –

ответ

0

Чтобы всегда гарантировать, что я имел последовательный вывод на это, я завернул его в Numpy массиве и Разгладив:

np.array(stats.ttest_ind(rvs1.values, rvs2.values)).flatten()

, который возвратит:

[0.26833823296239279, 0.78849443369564776]

независимо от версия

Смежные вопросы