【问题标题】:How can you multiply all the values within a 2D df with all the values within a 1D df separately?如何将 2D df 中的所有值分别与 1D df 中的所有值相乘?
【发布时间】:2022-01-26 02:49:11
【问题描述】:

我是 numpy 的新手,我目前正在从事一个建模项目,我必须根据两个不同的数据源执行一些计算。但是直到现在我还没有弄清楚如何将所有单独的值相乘:

我有两个数据框

一个二维数据框:

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

一个一维数据框:

df2 = np.array([1, 2, 3, 4, 5])

我想将第一个数据帧 (df1) 中的所有单个值分别与存储在第二个数据帧中的所有值相乘,以创建形状为 5x3x3 的数据立方体/新 3D 数据帧:

df3 = np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[2, 4, 6], [8, 10, 12], [14, 16, 18]], ..... ])

我尝试了不同的方法,但每次都无法获得看起来像 df3 的东西。

x = np.array([[1, 2, 3],
     [4, 5, 6],
    [7, 8, 9]])
y = np.array([1, 2, 3, 4, 5])



z = y


for i in range(len(z)):
    z.iloc[i] = x

for i in range(0, 5):
    for j in range(0, 3):
        for k in range(0, 3):
            z.iloc[i, j, k] = y.iloc[i] * x.iloc[j, k]

print(z)

有人可以帮我提供一些示例代码吗?谢谢!

【问题讨论】:

  • 那些不是datafamres:它们是列表
  • 如果您没有提供证据,请不要费心说“我尝试了不同的方法”。请看minimal reproducible example
  • @Mabadai。这可能不是解决问题的最佳方法
  • 请不要编造条款或使用不相关的标签。 Numpy 没有数据框,您的问题也没有跳出 numpy
  • 恐怕我听不懂。我不是在这里谈论解决方案;他们很好。我正在谈论这个问题。既然 OP 付出了他们的努力,所以我同意之后的投票。但在此之前,我只是好奇为什么即使没有努力和明确的术语,这个问题也会得到支持。

标签: python dataframe numpy multidimensional-array


【解决方案1】:

试试这个:

df1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
df2 = np.array([1, 2, 3, 4, 5])

df3 = df1 * df2[:, None, None]

输出:

>>> df3
array([[[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9]],

       [[ 2,  4,  6],
        [ 8, 10, 12],
        [14, 16, 18]],

       [[ 3,  6,  9],
        [12, 15, 18],
        [21, 24, 27]],

       [[ 4,  8, 12],
        [16, 20, 24],
        [28, 32, 36]],

       [[ 5, 10, 15],
        [20, 25, 30],
        [35, 40, 45]]])

【讨论】:

  • 这显然会导致显示的数据出现错误,除非您对 op“真正的含义”做出一堆假设。
猜你喜欢
  • 2021-09-14
  • 2015-08-20
  • 1970-01-01
  • 2023-02-23
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 2019-07-06
  • 1970-01-01
相关资源
最近更新 更多