是否可以在每次迭代中通过 1 个不同的值将 numpy 数组分解为 运行?
Is it possible to breakdown a numpy array to run through 1 different value in every iteration?
所以,我有一个 excel 电子表格,我希望我的程序能够访问它并从中获取数据。
为此,我安装了 pandas 并成功地将电子表格导入 到代码中。
Satellites_Path = (r'C:\Users\camer\Documents\Satellite_info.xlsx')
df = pd.read_excel(Satellites_Path, engine='openpyxl')
所以这一切都有效。
问题是我想让它做的是抓取一段数据,说出2个东西之间的距离,然后运行这个数字通过一个循环。然后我希望它在 excel 电子表格中下降一位并为新数字再次执行此操作直到它完成该列然后我希望它结束。
数据文件内容如下:
Number ObjectName DistanceFromEarth(km) Radius(km) Mass(10^24kg)
0 0 Earth 0.0 6378.1 5.97240
1 1 Moon 384400.0 1783.1 0.07346
我把 'Number' 放进去是因为我认为我可以通过这些数字做一个循环 while Number is < a limit then 运行 但我发现数据文件不起作用作为一个数组或整数,所以这是行不通的。
从那以后,我试图通过把它变成一个 NumPy 数组来把它变成一个整数:
N = df.loc[:,'Number']
D = np.array(df.loc[:,'DistanceFromEarth(km)'])
R = np.array(df.loc[:,'Radius(km)'])
然而,阵列仍然存在问题。我试过像这样拆分它们:
a = (np.array(N))
print(a)
newa = np.array_split(a,3)
现在这种方法有效,但作为测试,我做了一点点,它会无限重复:
while True:
if (newa[0]) < 1:
print(newa)
如果 1 变成 0,它打印一次然后停止。我只想 运行 几次。
我想知道的是,是否可以读取此文件,从中获取一个数字并使用它 运行 通过计算,然后对列表中的下一颗卫星重复该操作?我想这样做的原因是我要列一个很长的清单。我已经对太阳系中的本地行星进行了工作模拟,但我想添加更多的天体并以我以前的方式进行,这会使编写变得非常长、非常密集并引入更多问题。
从 excel 中读取文件会让我的生活变得更轻松,并使其更具前瞻性,但我不知道这是否可行,而且我在网上看不到任何类似的内容。
Pandas 在这里绝对是一个不错的选择,但缺乏如何使用它们的知识似乎阻碍了你。
下面是几个可能适用于您的情况的示例:
- 简单的逐行计算以创建新列:
df['Diameter(km)'] = df['Radius(km)']*2
print(df)
输出:
Number ObjectName DistanceFromEarth(km) Radius(km) Mass(10^24kg) Diameter(km)
0 0 Earth 0.0 6378.1 5.97240 12756.2
1 1 Moon 384400.0 1783.1 0.07346 3566.2
- 运行每一行通过一个函数:
def do_stuff(row):
print(f"Number: {row['Number']}", f"Object Name: {row['ObjectName']}")
df.apply(do_stuff, axis=1)
输出:
Number: 0 Object Name: Earth
Number: 1 Object Name: Moon
所以,我有一个 excel 电子表格,我希望我的程序能够访问它并从中获取数据。
为此,我安装了 pandas 并成功地将电子表格导入 到代码中。
Satellites_Path = (r'C:\Users\camer\Documents\Satellite_info.xlsx')
df = pd.read_excel(Satellites_Path, engine='openpyxl')
所以这一切都有效。
问题是我想让它做的是抓取一段数据,说出2个东西之间的距离,然后运行这个数字通过一个循环。然后我希望它在 excel 电子表格中下降一位并为新数字再次执行此操作直到它完成该列然后我希望它结束。
数据文件内容如下:
Number ObjectName DistanceFromEarth(km) Radius(km) Mass(10^24kg)
0 0 Earth 0.0 6378.1 5.97240
1 1 Moon 384400.0 1783.1 0.07346
我把 'Number' 放进去是因为我认为我可以通过这些数字做一个循环 while Number is < a limit then 运行 但我发现数据文件不起作用作为一个数组或整数,所以这是行不通的。 从那以后,我试图通过把它变成一个 NumPy 数组来把它变成一个整数:
N = df.loc[:,'Number']
D = np.array(df.loc[:,'DistanceFromEarth(km)'])
R = np.array(df.loc[:,'Radius(km)'])
然而,阵列仍然存在问题。我试过像这样拆分它们:
a = (np.array(N))
print(a)
newa = np.array_split(a,3)
现在这种方法有效,但作为测试,我做了一点点,它会无限重复:
while True:
if (newa[0]) < 1:
print(newa)
如果 1 变成 0,它打印一次然后停止。我只想 运行 几次。
我想知道的是,是否可以读取此文件,从中获取一个数字并使用它 运行 通过计算,然后对列表中的下一颗卫星重复该操作?我想这样做的原因是我要列一个很长的清单。我已经对太阳系中的本地行星进行了工作模拟,但我想添加更多的天体并以我以前的方式进行,这会使编写变得非常长、非常密集并引入更多问题。 从 excel 中读取文件会让我的生活变得更轻松,并使其更具前瞻性,但我不知道这是否可行,而且我在网上看不到任何类似的内容。
Pandas 在这里绝对是一个不错的选择,但缺乏如何使用它们的知识似乎阻碍了你。
下面是几个可能适用于您的情况的示例:
- 简单的逐行计算以创建新列:
df['Diameter(km)'] = df['Radius(km)']*2
print(df)
输出:
Number ObjectName DistanceFromEarth(km) Radius(km) Mass(10^24kg) Diameter(km)
0 0 Earth 0.0 6378.1 5.97240 12756.2
1 1 Moon 384400.0 1783.1 0.07346 3566.2
- 运行每一行通过一个函数:
def do_stuff(row):
print(f"Number: {row['Number']}", f"Object Name: {row['ObjectName']}")
df.apply(do_stuff, axis=1)
输出:
Number: 0 Object Name: Earth
Number: 1 Object Name: Moon