迭代一个 numpy 矩阵,并为它的行分配来自其他数据帧和 numpy 数组的信息

问题描述

我有一个矩阵,例如,定义为 x_matrix = np.zeros(200,16) 遍历行,我需要为这个矩阵的每一行分配两个分量向量,a1一个有 10 个元素的数组,{{ 1}} 是属于 Pandas 数据框 a2 y_dataframe 的形状为 y_dataframe

的对应行

我可以按如下方式迭代矩阵。但我还需要 x_matrix 的行号来检索 y_dataframe 中的相应行。是否有其他方法可以迭代矩阵行,并将其行与上述不同的分量向量组合在一起。

(200,6)

解决方法

如果您希望使用 np.repeatnp.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,:] 的行向量,然后 repeat200 次按行({{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],即一行数据框。