python - 将二维数组中任意行的值赋给 nans

标签 python arrays numpy

我有一个 2D numpy 数组 z,其中我想根据线 +/- 宽度 20 的方程为 nan 分配值。我正在尝试实现拉曼第二散射校正,因为它是通过此处列出的 eemR 包中的 eem_remove_scattering 方法完成: 奥 git _a 但该方法不可见。

   import numpy as np
   ex = np.array([240, 245, 250, 255, 260, 265, 270, 275, 280, 285, 290, 295, 300,
        305, 310, 315, 320, 325, 330, 335, 340, 345, 350, 355, 360, 365,
        370, 375, 380, 385, 390, 395, 400, 405, 410, 415, 420, 425, 430,
        435, 440, 445, 450])
   em = np.array([300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324,
        326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350,
        352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376,
        378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402,
        404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428,
        430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454,
        456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480,
        482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506,
        508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532,
        534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558,
        560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584,
        586, 588, 590, 592, 594, 596, 598, 600])
    X, Y = np.meshgrid(ex, em)
    z = np.sin(X) + np.cos(Y)

我想要应用的方程是 em = - 2 ex/(0.00036*ex-1) + 500。 我想将数组中与此线相交的每个值 (+/- 20 ) 设置为 nans。将单个元素设置为 nans 很简单,但我无法找到一个 python 函数来将此方程应用于数组,并且仅将与该线相交的值设置为 nans。 所需的输出将是一个与 z 维度相同的新数组,但其值与相当于 nan 的线相交。非常感谢任何有关如何继续的建议。

最佳答案

np.where( "condition for junction", np.nan, z) 的形式使用 np.where:

zi = np.where( np.abs(-2*X/(0.00036*X-1) + 500 - Y) <= 20, np.nan, z)

事实上,这里没有交集,因为 (0.00036*ex-1) 对于所有值都接近 -1,这使得 - 2*ex/(0.00036*ex-1) 接近于 2*ex,添加 500 会使该值超过 em 中的任何值。但原则上这是可行的。

此外,我怀疑通过使用 masked array 可以更好地实现您计划通过将这些值设置为 NaN 来实现的目标。 .

关于python - 将二维数组中任意行的值赋给 nans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41090854/

相关文章:

python - 将 url 页面连接为单个数据框

python - 使用 Keras 在图形模式下将张量转换为不规则张量

python - Scrapy:如何提取 HTML 标签内的所有单词?

javascript - 如何 "duplicate"数组的内容

c++ - OpenGL 显示两个数组

python - 生成倾斜正弦波的图像

python - 具有多维(或非标量)输出的 Scipy 过滤器

python - pandas read_csv 忽略最后一列中的分隔符

python - 为什么我的带有线程的 numpy 代码不是并行的?

php - 在 PHP 中删除关联数组的重复元素