Есть ли способ в PowerShell сделать положительное число к отрицательному числу без умножения? - PullRequest
0 голосов
/ 03 октября 2018

Мне было интересно, есть ли способ превратить положительное число в отрицательное число без умножения, например, $b = $a * -1
Я ищу наиболее разумный способ с точки зрения затрат, потому что я буду делать это многораз в сценарии.

-edit На данный момент я использую это, но выглядит очень дорого с точки зрения вычислений:

    $temp_array = New-Object 'object[,]' $this.row,$this.col

    for ($i=0;$i -le $this.row -1 ; $i++) {
        for ($j=0;$j -le $this.col -1 ; $j++) {
            $digit = $this.data[$i,$j] * -1
            $temp_array[$i,$j] = 1 / ( 1 + [math]::exp( $digit ) )
            #[math]::Round( $digit ,3)
        }
    }
    $this.data = $temp_array

1 Ответ

0 голосов
/ 04 октября 2018

Чтобы безоговорочно превратить положительное число в его отрицательный эквивалент (или, в более общем случае, перевернуть знак числа), просто используйте унарный оператор - :

 PS> $v = 10; -$v
 -10

Примененона ваш случай:

 $digit = -$this.data[$i,$j]

В качестве отступления: если производительность имеет значение, вы можете ускорить ваши циклы, используя выражения диапазона , чтобы создать индексы для итерации, хотя и врасход потребления памяти:

$temp_array = New-Object 'object[,]' $this.row,$this.col

for ($i in 0..($this.row-1)) {
    for ($j in 0..($this.col-1)) {
        $digit = - $this.data[$i,$j]
        $temp_array[$i,$j] = 1 / ( 1 + [math]::exp( $digit ) )
    }
}
$this.data = $temp_array
...