【问题标题】:Create list of x,y,z coordinates using loop in Python在 Python 中使用循环创建 x、y、z 坐标列表
【发布时间】:2021-02-27 12:10:15
【问题描述】:

我想创建包含笛卡尔坐标系中点坐标的 3 维数组。 我的用户输入如下:

import pandas as pd
import numpy as np

rows = int(input("Please Enter the Total Number of Rows  : "))
columns = int(input("Please Enter the Total Number of Columns  : "))
levels = int(input("Please Enter the Total Number of Levels  : "))

dx = int(input("Please Enter the Pitch in x Direction  : "))
dy = int(input("Please Enter the Pitch in y Direction  : "))
dz = int(input("Please Enter the Pitch in z Direction  : "))

x0 = int(input("Please Enter the Origin Coordinate in x Direction  : "))
y0 = int(input("Please Enter the Origin Coordinate in y Direction  : "))
z0 = int(input("Please Enter the Origin Coordinate in z Direction  : "))

我想从坐标为 [x0,y0,z0] 的点开始,然后根据插入的行数、列数、级别(第三维)和点之间的间距(dx、dy、dz)创建 3D 数组)

我正在考虑循环

Data=np.zeros(('rows','columns','levels'))
for i in range(rows):
    for j in range(columns):
        for k in range(levels):

但不知道如何编写此代码。任何人都可以帮忙吗?输出应该是 3D 数组的形式。

非常感谢 卢卡斯

【问题讨论】:

  • 当你说“点之间的间距”时,你想要多长的距离?
  • dx, dy, dz 是各个方向的间距
  • 嗯,你需要 3 维空间中的 3 个坐标(dx, dy, dz)来做一个点。您还想用哪一点来测量距离?再明确一点,您想创建一个 rows*columns*levels 矩阵,其中包含每个具有不同原点坐标的点?
  • 没有洛伦佐。你没看对。让我们形象地想象一下。我想创建 3D 矩形图案。我知道 2D 中的行数和列数以及将其扩展到 3D 的级别数。我在每个方向的坐标之间都有间距/距离/间距,称为 dx,dy,dz ... 因为它通常不应该从坐标 0,0,0 开始,所以我还插入第一个点的坐标作为用户输入( x0,y0,z0)。我想获得计算坐标的 3D 数组。每个点由 (x,y,z) 坐标给出。绝对输出将是由 4 列(点 ID、x 坐标、y 坐标、z 坐标)组成的 csv

标签: python arrays numpy for-loop


【解决方案1】:

x, y, z设置为向量

x = x0 + np.arange(rows)    * dx
y = y0 + np.arange(columns) * dy
z = z0 + np.arange(levels)  * dz

现在用np.meshgrid 制作 3x 形状 (rows, columns, levels) 的数组

X, Y, Z = np.meshgrid(x, y, z)

现在您可以只使用这些变量来创建标量字段

Data = X**2 + Y**2 + Z**2  # for example

您的Data 现在将是一个(rows, columns, levels) 形数组,维度轴对应于x, y, z

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多