提问人:Luther Brown 提问时间:10/14/2022 最后编辑:Luther Brown 更新时间:10/16/2022 访问量:62
如何按已知值为数组编制索引
How to index an array by known values
问:
我有一个 2D 数组,由左边的时间和右边的质量组成。我想将数组过滤为 10 年的 10 个已知值。因此,我的预期/期望输出如下:
array([[ 3.64990e+02, -4.09452e+06],
[ 7.29730e+02, -5.45551e+06],
[ 1.09450e+03, -6.39009e+06],
[ 1.45910e+03, -7.15813e+06],
[ 1.82380e+03, -7.87166e+06],
[ 2.18860e+03, -8.58857e+06],
[ 2.55340e+03, -9.33691e+06],
[ 2.91820e+03, -1.01254e+07],
[ 3.28310e+03, -1.09508e+07],
[ 3.64790e+03, -1.18056e+07]])
如您所见,左边的数字是 1、2、3,..., 10 年(以天为单位)。我想要右边的数字,这些数字与这些年份中的每一年相对应。下面是数组开头和结尾的数据示例:
n = con = np.stack((times, mass), axis=1)
print(n)
[[ 2.77990e-01 -3.58090e+01]
[ 5.55970e-01 -9.10160e+01]
[ 8.33960e-01 -1.70890e+02]
...
[ 3.64960e+03 -1.18096e+07]
[ 3.64990e+03 -1.18103e+07]
[ 3.65000e+03 -1.18106e+07]
以下是我尝试为所需值编制索引的方法,但没有奏效:
for ti, mi in n:
for mi in [365,365*2,365*3,365*4,365*5,365*6,365*7,365*8,365*9,365*10]:
print(ti,mi)
365 -35.809
730 -35.809
1095 -35.809
1460 -35.809
1825 -35.809
2190 -35.809
2555 -35.809
2920 -35.809
3285 -35.809
3650 -35.809
365 -91.016
730 -91.016
1095 -91.016
1460 -91.016
1825 -91.016
2190 -91.016
2555 -91.016
2920 -91.016
3285 -91.016
3650 -91.016
365 -170.89
730 -170.89
1095 -170.89
1460 -170.89
1825 -170.89
2190 -170.89
2555 -170.89
2920 -170.89
3285 -170.89
3650 -170.89
365 -282.73
它开始重复,右侧的值不正确。我不是程序员,所以我不确定我做错了什么。
答:
-1赞
Abhi
10/16/2022
#1
根据我的理解,您拥有并且您想根据以下代码中的值过滤值。time
masses
2d array
time
first element
sub-array
num_of_years = 10
for ti, mi in n:
if ti in list(range(365,365*(num_of_years+1),365)):
print(ti,mi)
希望这会有所帮助!
评论
0赞
Luther Brown
10/20/2022
感谢您的帮助。它非常接近,但由于某种原因,它没有打印出前两次,即 和 .您使用的列表显然打印出了我想索引的时间,所以我不明白出了什么问题。这是输出:365
730
1095.0 -6391350.0 1460.0 -7159800.0 2190.0 -8591360.0 3285.0 -10955300.0 3650.0 -11810600.0
0赞
Abhi
10/20/2022
你能分享一下你的数组吗?n
0赞
Luther Brown
10/20/2022
这是 13000+ 个数据点。如果您仍然感兴趣,这里有一个谷歌驱动器链接:drive.google.com/file/d/1Z2-Y1oXzMpYBEMMqpplOVtGbvMCIaZUs/...
0赞
Abhi
10/21/2022
它没有显示的原因,代码会检查特定值,例如,但您从 csv 共享的数据没有特定的舍入值,并且在前两个值中具有 - 对于其余值,它没有尾随小数。请参考这张图片 - postimg.cc/WFBScy8r365, 730, 1095....
trailing decimals
365.27, 730.01
0赞
Luther Brown
10/22/2022
我明白了。这就是我所怀疑的。我猜熊猫和 numpy 无法处理这样的漂浮物。我不知道熊猫这么聪明 - 谢谢你的截图,谢谢你的帮助。:)
下一个:如何在 R 中创建循环函数?
评论