MatLab与Python - 矢量化和重塑数组

时间:2018-04-03 06:41:10

标签: python matlab numpy scipy

考虑三种不同的MatLab数组:abc。它们都是大小相同的阵列。让我们说64 x 64。现在,为了在另一个数组X内以一维向量的形式重新组织其中一个数组的元素,我可以执行以下操作:

X = [X a(:)];

现在,我有一个4096 x 1数组。如果我想拥有一个数组,其中每列包含不同数组的元素,我可以重复上面的过程为b和c。

Python中是否有相同的内容?

2 个答案:

答案 0 :(得分:1)

您可以使用np.concatanate功能。例如:

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.array([7,8,9])
res = np.concatenate([a,b,c])

也可以按如下顺序进行:

res = a
res = np.concatenate([res,b])
res = np.concatenate([res,c])

结果:

res = array([1, 2, 3, 4, 5, 6, 7, 8, 9])

答案 1 :(得分:0)

为了达到4x1,你可以这样使用reshape()函数:

np.reshape((-1, 1))

a = np.zeros((2,2)) #creates 2,2 matrix
print(a.shape) #2,2
print(a.reshape((-1, 1)) #4,1

这将确保您在结果数组中获得1列,而不管设置为 -1 的行元素。

如评论中所述,您可以使用numpy的flatten()函数,它可以使矩阵变平。例如;如果您有2x2矩阵,flatten()将使其成为1x4向量。

a = np.zeros((2,2)) # creates 2,2 matrix

print(a.shape) # 2,2
print(a.flatten()) # 1,4