Если массивы действительно имеют (10,1) форму, то просто объедините:
In [60]: x,y,z = np.ones((10,1),int), np.zeros((10,1),int), np.arange(10)[:,None]
In [61]: np.concatenate([x,y,z], axis=1)
Out[61]:
array([[1, 0, 0],
[1, 0, 1],
[1, 0, 2],
[1, 0, 3],
[1, 0, 4],
[1, 0, 5],
[1, 0, 6],
[1, 0, 7],
[1, 0, 8],
[1, 0, 9]])
Если они на самом деле 1d, вам придется так или иначе манипулировать размерами. Например, измените форму или добавьте измерение, как я сделал с z
выше. Или используйте некоторую функцию, которая сделает это за вас:
In [62]: x,y,z = np.ones((10,),int), np.zeros((10,),int), np.arange(10)
In [63]: z.shape
Out[63]: (10,)
In [64]: np.array([x,y,z]).shape
Out[64]: (3, 10)
In [65]: np.array([x,y,z]).T # transpose
Out[65]:
array([[1, 0, 0],
[1, 0, 1],
[1, 0, 2],
[1, 0, 3],
[1, 0, 4],
[1, 0, 5],
[1, 0, 6],
[1, 0, 7],
[1, 0, 8],
[1, 0, 9]])
np.array([...])
объединяет массивы в новом начальном измерении. Помните, что в Python / numpy первое измерение является самым внешним (MATLAB наоборот).
stack
варианты настраивают размеры, а затем делают concatenate
:
In [66]: np.stack([x,y,z],axis=1).shape
Out[66]: (10, 3)
In [67]: np.column_stack([x,y,z]).shape
Out[67]: (10, 3)
In [68]: np.vstack([x,y,z]).shape
Out[68]: (3, 10)
===
D0 =np.array([[np.cos(2*np.pi*f*time)],[np.sin(2*np.pi*f*time)],np.ones((len(time),1)).transpose()],'float').transpose()
Полагаю, f
- это скаляр, а time
- это массив 1d (shape (10,))
[np.cos(2*np.pi*f*time)]
, оборачивает (10,) в []
, который при превращении в массив принимает форму (1,10).
np.ones((len(time),1)).transpose()
транспонируется (10,1) в (1,10).
np.array(....)
из них создает массив (3,1,10). Транспонирование это (10,1,3).
Если вы уронили [] и сформировали (1,10) массивы:
D0 =np.array([np.cos(2*np.pi*f*time), np.sin(2*np.pi*f*time), np.ones((len(time))]).transpose()
объединятся 3 (10, ) для создания (3,10) массивов, который затем транспонируется в (10,3).
В качестве альтернативы
D0 =np.concatenate([[np.cos(2*np.pi*f*time)], [np.sin(2*np.pi*f*time)], np.ones((1,len(time),1))], axis=0)
объединяет 3 (1,10) массива для создания ( 3,10), который вы можете перенести.