gpt4 book ai didi

Python 新手 : manipulating arrays

转载 作者:太空宇宙 更新时间:2023-11-04 09:06:52 24 4
gpt4 key购买 nike

我已经在这里问了几个关于同一主题的问题,但我真的不想让与我一起做研究的教授失望。这是我第一次使用 Python,我可能有点不知所措。

无论如何,我收到了一个要读取的文件并且能够使用这个命令:

SNdata = numpy.genfromtxt('...', dtype=None, 
usecols (0,6,7,8,9,19,24,29,31,33,34,37,39,40,41,42,43,44),
names ['sn','off1','dir1','off2','dir2','type','gal','dist',
'htype','d1','d2','pa','ai','b','berr','b0','k','kerr'])

sn 只是一个特定超新星名称的数组; type 是超新星类型(Ia 或 II)等的数组。

我需要做的第一件事就是简单地计算给定 SN 类型(Ia 或 II)的某些属性的概率。

例如,htype 列是星系的形态(以整数 1=椭圆形到 8=不规则)给出。我需要计算给定 TypeIa 的椭圆概率和给定 TypeII 的椭圆概率,对于所有不超过 8 的整数。

对于椭圆形,我知道我只需要 htype = 1 和 type = Ia 的元素数除以 type = Ia 的元素总数.然后用 htype = 1 和 type = II 的元素数除以 type = II 的元素总数。

我只是不知道如何为此编写代码。我计划首先找到每种类型的总数,然后运行一个 for 循环来查找具有特定 htype 的元素的数量,给定它们的 type(Ia 或 II ).

谁能帮我开始做这件事?如果需要任何说明,请告诉我。

非常感谢。

最佳答案

Numpy 支持 bool 数组运算,这将使您的代码编写起来相当简单。例如,您可以这样做:

htype_sums = {}
for htype_number in xrange(1,9):
htype_mask = SNdata.htype == htype_number
Ia_mask = SNdata.type == 'Ia'
II_mask = SNdata.type == 'II'

Ia_sum = (htype_mask & Ia_mask).sum() / Ia_mask.sum()
II_sum = (htype_mask & II_mask).sum() / II_mask.sum()
htype_sums[htype_number] = (Ia_sum, II_sum)

每个 _mask 变量都是 bool 数组,因此当您对它们求和时,您计算的是 True 的元素数。

关于Python 新手 : manipulating arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19759210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com