For循环np.哪里以及多种情况

2024-09-29 17:10:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个叫做通量极限的值数组:

flux_limit = np.array([0.08333333,0.11785113,0.14433757...]) 

里面有99个值。我试图使用这些值作为条件使用np.哪里()搜索我读过的python目录。我想从目录中得到满足这两个条件的每个通量限制的值的数量:

^{pr2}$

我希望,因为这是给出满足这两个条件的值的索引,所以我将得到一个列表列表,每个内部列表对应一个flux_限制值。我知道如何只使用一个值执行此操作,但在for循环中抛出此值时遇到错误:

ValueError: operands could not be broadcast together with shapes (3636586,) (2,).

我在google上搜索了这个错误的含义,但是答案通常是针对用户的问题的,我没有足够的悟性来诊断我的问题。在

编辑:

catalog['snu_arr'][6] = [  4.81194684e-09   5.13640614e-08   5.48405854e-09 ...,   2.95787549e-06  3.43822015e-09   2.17239404e-09] 
catalog['zgal'] = [  0.01027171   0.01691939   0.01614619 ...,  10.18688393  10.21286678 10.20675182]

这个目录很大,3636586个值,这是错误消息中第一个数字的来源。在

编辑2: 所以目录['zgal']和目录['snu_arr'][6]的长度相同。在

print(catalog['zgal'].shape, catalog['snu_arr'][6].shape)
>>>((3636586L,), (3636586L,))

以下是我对通量限制中只有一个值所做的操作:

index = np.where((catalog['snu_arr'][6]*1000 > .083) & (catalog['zgal'] > 6.))
print(index)

作为输出

(array([3615964, 3616643, 3616732, 3617188, 3618296, 3618976, 3619040,
   3619205, 3619429, 3620039, 3620142, 3620185, 3620487, 3620810,
   3621045, 3621375, 3621396, 3621828, 3622030, 3622326, 3622713,
   3622999, 3623137, 3623202, 3624357, 3624919, 3625077, 3626185,
   3626558, 3626666, 3627142, 3627279, 3627660, 3628004, 3628558,
   3629997, 3630053, 3630128, 3630801, 3631271, 3631567, 3632210,
   3632269, 3632285, 3632589, 3633107, 3633816, 3634833, 3635190,
   3635307, 3635608, 3635711, 3635767, 3636159, 3636227], dtype=int64),)

据我所知,这些是满足上述两个条件的价值指标。由于某些原因,它以列表的形式给出输出,因此我使用len()查找值的数量。在

print(len(index[0]))
>> 55

Tags: 目录列表index错误np条件arraycatalog

热门问题