gpt4 book ai didi

python - 在 Python : Given an original array of numbers, 中,我将如何创建一个包含特定范围内原始数组值的新数组?

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:16 25 4
gpt4 key购买 nike

import os
import pyfits as ps
import lomb
import numpy as np
import matplotlib.pyplot as plt

hdulist = ps.open('filename')

tbdata = hdulist[1].data

PDCFlux = tbdata.field(7)
PDCFlux = PDCFlux[~np.isnan(PDCFlux)]

psd,freq = lomb.lomb(Timesec,PDCFlux)
logpsd = np.log10(psd)
logfreq = np.log10(freq)

#want an associated 'slope'.

'''PDC Slope'''
PDCFluxrange = PDCFlux.all[np.log10(4*(10**(-5)))<freq<np.log10(4*(10**(-7)))]

在最后一行中,我尝试创建一个新数组:PDCFluxrange,它由数组 PDCFlux 的值组成,用于 freq(频率) 介于:log10(4*(10**(-5)))log10(4*(10**(-7))

当我在 Pylab 中运行该程序时,我收到类似于以下内容的错误消息:Value Error: The truth value of an array with multiple element is ambiguous。使用 a.any()a.all()

在这种情况下,我不确定如何在不创建循环或定义新函数的情况下在我的代码中正确使用这两个函数;我认为可能有更简单的方法来完成同样的事情。

最佳答案

>>> import numpy as np
>>> a = np.arange(10)
>>> a[(a > 2) & (a < 8)]
array([3, 4, 5, 6, 7])

每个条件(a > 2a < 8)创建一个 bool numpy 数组,其长度等于 a , 并包含您的标准在 a 中每个位置的真值.

   >>> a > 2
array([False, False, False, True, True, True, True, True, True, True], dtype=bool)

然后,您正在使用 numpy.logical_and找到两个条件都为真的位置。

最后,您将结果数组用作 boolean or "mask" index array仅检索原始数组中满足您的条件的元素。

认为你得到了ValueError因为虽然 a > 2是有效的(并且实际上只是调用 a.__gt__(2) ,像 2 < a < 8 这样的语句首先调用 cmp(2,a) ,这对我来说是相同的 ValueError :

>>> a = np.arange(10)
>>> cmp(2,a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

关于python - 在 Python : Given an original array of numbers, 中,我将如何创建一个包含特定范围内原始数组值的新数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12901552/

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