将两个方程应用于一个数组

用户名

我是Python和Numpy的新手,我花了很多时间(几天)来寻找问题的答案,但是我很沮丧。我有一系列地震震级,需要将其转换为其他形式的震级(Mb到Mo)。对于小于4.3的幅度,我需要进行一次转换,对于大于或等于幅度的幅度,我需要进行第二次转换。我需要输出与输入的顺序相同,这就是我碰壁的地方。我可以将转换结果输出到两个单独的数组中,但是我不知道如何编写一个程序,该程序根据幅度选择一个方程,应用该方程,然后继续进行到数组中的下一个幅度。即使以下示例在许多级别上显然是不正确的,但我认为它显示了我正在尝试实现的目标:

data = numpy.genfromtxt('OK_mag3.csv')

mag = numpy.asarray(data)

for x in mag:

    if x < 4.3:
        mw = 1.03 + 0.67 * x     
    else:
        mw = 0.1 + 0.88 * x

另外,获得此正确值一半的示例是:

mw = mag[mag<4.3]*0.67+1.03

但是我不知道如何结合第二个方程式。

非常感谢您的协助!

阿玛丹
mw = numpy.where(mag < 4.3, 1.03 + 0.67 * mag, 0.1 + 0.88 * mag)

请参阅上的文档numpy.where第一个参数将转换data为布尔值列表,第二个参数将使用一个或另一个函数来计算整个向量。然后where根据布尔值选择两个结果中哪个更好。

编辑:基于注释中提出的问题,以下内容不会使工作加倍,并且可以避免其中一种计算无效的情况-但仍会为选择器数组占用一些内存。

mw = numpy.zeros(len(mag))
select = mag < 4.3
mw[select] = 1.03 + 0.67 * mag[select]
select = ~select
mw[select] = 0.1 + 0.88 * mag[select]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将两个数组合并为一个数组

Swift:将两个数组匹配为一个数组

将功能元素应用于两个DataFrame

Git:将更改应用于两个分支

CGAffineTransform连接两个矩阵与将一个应用于另一个

将函数应用于python中的两个熊猫数据帧(两个数据帧中的每一行的scipy.stats.spearmanr)

将属性应用于多个数组中的每个元素,然后返回一个数组的平面图

如何使用流API将两个过滤器应用于一个列表

gulp.src基本选项应用于一个数组项

使用jQuery“ extend”连接两个数组将返回一个数组

根据行的条件将两种排序方法应用于一个数据框

使用每个值中的小于1的值将两个数据帧组合为一个,并应用于数据帧列表

脾气暴躁的怪癖:将函数应用于两个1D数组的所有对,以获得一个2D数组

jQuery将两个数组(键,值)关联到一个数组中

有条件地将两个函数之一应用于一个参数

将两个不同的利率集应用于同一类别的两个对象

什么是迭代两个流并将操作应用于一个的更好方法

将两个数组合并为一个数组列表

如何将函数应用于数组并形成两个单独的数组?

python:将两个数组合并为一个数组

F# - 将函数应用于两个不同长度的数组

将一个数组分成两个数组

.innerHTML 应用于两个 div 时应仅应用于一个

将两个数组匹配为一个数组。不通过 for 循环

将一个函数数组应用于另一个数组

合并两个数组并应用一个函数

函数 `any()` 应用于多个数组而不是一个数组

将一个方程应用于多个变量的值(Stata)

将两个 CSS 过渡应用于一个 div 元素