2013-02-15 2 views
2

Я читал документацию по массивам numpy, и некоторые из них не имеют смысла. Например, в ответе here предлагается использовать np.vstack или np.concatenate для объединения массивов, как и во многих других местах в Интернете. Однако, когда я пытаюсь сделать это с помощью преобразованного lists в np.arrays это не работает: "простые, но странные проблемы с vstack/concatenate (python)

>>> some_list = [1,2,3,4,5] 
>>> np.array(some_list) 
array([1, 2, 3, 4, 5]) 
>>> some_Y_list = [2,1,5,6,3] 
>>> np.array(some_Y_list) 
array([2, 1, 5, 6, 3]) 
>>> dydx = np.diff(some_Y_list)/np.diff(some_list) 
>>> np.vstack([dydx, dydx[-1]])" 

Traceback (most recent call last): 
    File "<pyshell#5>", line 1, in <module> 
    np.vstack([dydx, dydx[-1]]) 
    File "C:\Python27\lib\site-packages\numpy\core\shape_base.py", line 226, in vstack 
    return _nx.concatenate(map(atleast_2d,tup),0) 
ValueError: array dimensions must agree except for d_0 

В любом случае, что я могу это сделать

Все, что я нуждаясь в этом для в этом случае? просто сделать производные любого порядка такой же формой, как мой X массив заданного пользователем, так что я могу сделать обработку.

Спасибо за любую помощь.

ответ

2

Следующего не будет работать excep т в некоторых весьма ограниченных обстоятельствах:

np.vstack([dydx, dydx[-1]]) 

Здесь dydx массив и dydx[-1] является скаляром.

Неясно, что вы пытаетесь достичь, но вы, возможно, значит, укладывать их по горизонтали:

np.hstack([dydx, dydx[-1]]) 

?

In [38]: np.hstack([dydx, dydx[-1]]) 
Out[38]: array([-1, 4, 1, -3, -3]) 
+0

Я думал об этом, но '[dydx [-1]]' или '[dydx [-1]]' вместо 'dydx [-1]' не помогло. – chase

+0

@chase: Что именно вы пытаетесь достичь? – NPE

+0

Aha 'np.hstack()' работает! Это действительно было так просто, спасибо вам большое! – chase

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