问题描述
我有一个矩阵,例如,定义为 x_matrix = np.zeros(200,16)
遍历行,我需要为这个矩阵的每一行分配两个分量向量,a1
是一个有 10 个元素的数组,{{ 1}} 是属于 Pandas 数据框 a2
y_dataframe
的形状为 y_dataframe
我可以按如下方式迭代矩阵。但我还需要 x_matrix 的行号来检索 y_dataframe 中的相应行。是否有其他方法可以迭代矩阵行,并将其行与上述不同的分量向量组合在一起。
(200,6)
解决方法
如果您希望使用 np.repeat
和 np.hstack
,则无需迭代即可完成此操作:
# assuming `a1` is shaped (10,) i.e. 1D array
a1_repeated = np.repeat(a1[np.newaxis,:],200,axis=0)
x_matrix = np.hstack((a1_repeated,y_dataframe))
我们首先通过 a1
将 (10,1)
转换为形状为 [np.new_axis,:]
的行向量,然后 repeat
它200
次按行({{1 }})。最后,我们axis=0
横向h
这个 stack
塑造了 (200,10)
和 a1_repeated
以获得形状为 y_dataframe
的数组。
但是如果您想迭代,(200,16)
会为您提供索引:
enumerate
其中 for row_number,row in enumerate(x_matrix):
x_matrix[row_number] = [*a1,*y_dataframe.iloc[row_number]]
等于您提到的 y_dataframe.iloc[row_number]
,即一行数据框。