【问题标题】:Formatting a Numpy array with even and odd numbers用偶数和奇数格式化 Numpy 数组
【发布时间】:2022-01-15 20:32:43
【问题描述】:

我正在尝试编写一个代码,将sequence_numbers 中的偶数替换为正的init_val 值,并将每个奇数和0 值的变量替换为负的init_val 值。我怎么能编写这样的代码?

代码:

import numpy as np 
import pandas as pd 

sequence_numbers= np.array([1,0,4,7,9,12,15,16,22,2,4,8,11,13,11,21,23,3])

#The choice could be 'even', 'odd' or '0'
choice = 'even'
init_val = 100 

预期输出:

[-100, -100, 100, -100, -100, 100, -100,100, 100,
 100, 100, 100, -100, -100, -100, -100,  -100, -100 ]   

【问题讨论】:

  • 所以你什么都没尝试或者......

标签: python arrays numpy iterator format


【解决方案1】:

使用numpy.where 和模运算符来确定奇/偶状态。

“偶数”示例:

out = np.where(sequence_numbers%2, -init_val, init_val)

输出:

array([-100,  100,  100, -100, -100,  100, -100,  100,  100,  100,  100,
        100, -100, -100, -100, -100, -100, -100])

对于“奇数”,只需反转真/假值:

out = np.where(sequence_numbers%2, init_val, -init_val)

或逆向init_val:

if choice == 'odd':
    init_val *= -1
out = np.where(sequence_numbers%2, -init_val, init_val)

【讨论】:

    【解决方案2】:

    你可以使用:

    out = (sequence_numbers % 2 * -2 + 1) * init_val
    print(out)
    
    # Output
    array([-100,  100,  100, -100, -100,  100, -100,  100,  100,  100,  100,
            100, -100, -100, -100, -100, -100, -100])
    

    【讨论】:

    • 为了清楚起见,我会写成(sequence_numbers % 2 * -2 + 1)*init_val(那时只有一个变量)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 2016-04-04
    • 2012-01-20
    • 2013-12-23
    相关资源
    最近更新 更多