【问题标题】:Python: creating a set of vector coordinates or a matrix from a multidimensional tablePython:从多维表创建一组矢量坐标或矩阵
【发布时间】:2016-08-15 23:50:41
【问题描述】:

如果我有一个有两个坐标的表格,比如(A,B),并且每个坐标条目都有一个值 C。例如:

      B_1   B_2    B_3  ...
A_1   C1    C2     C3   ...
A_2   C4    etc    ...  ...
A_3   ...
...

我需要将其转换为矩阵格式,理想情况下是[ [A_1, B_1], [A_1, B_2], ... ] 形式的数组数组和每个[A,B] 点对应的C 值数组[ C1, C2, ]

我需要这个的原因是因为我实际上有一个 3D(可能后来是 4D)表,我需要这样做,以便我可以对 C 值进行线性插值。

在 numpy 或 pandas 中是否有任何包或方法可以做到这一点?

目前我有这张纸上的表格,遍历点 (A,B,C) 及其相关值的所有排列将是非常乏味的。把它写成表格然后尽可能地转换会容易得多。

谢谢。

【问题讨论】:

标签: python arrays numpy pandas multidimensional-array


【解决方案1】:

你的问题很模糊。您是否希望 A 和 B 成为指向某个 C 的索引?还是 A 和 B 本身携带值?

根据我的一些猜测,也许这会有所帮助:

import numpy as np

# A values
A = np.arange(0, 8)
# B values
B = np.arange(16, 24)
# The corresponding C Values, where C[n, m] corresponds to A_n, B_m
C = np.arange(8**2).reshape(8, 8)

# Creating an 3x8x8 Array
ABC = np.meshgrid(A, B) + [C,]
ABC = np.array(ABC)

print ABC

您可能还想查看 itertools.combinations

【讨论】:

  • 感谢您的帮助。我的意思是创建两个数组:一个是所有可能的坐标集 (A_n, B_m),另一个是相关的 C[n, m] 值。实际上,我最终把我的表变成了一个 pandas 数据框,现在我知道怎么做了,它实际上应该很简单,有一些 for 循环。
  • 实际上我运行了你的代码,是的,这就是我试图用 meshgrid 函数做的事情。虽然我猜我真正的问题是我必须首先通过复印一些纸来“手动”创建表格。
  • 我真正的问题是我必须基本上“手动”创建表Welp,不幸的是没有模块可以帮助解决这类问题;)但是它是从文件中轻松加载 NumPy 数组(无论是二进制还是纯文本)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 2021-05-03
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-09
相关资源
最近更新 更多