根据给定列中的值更改numpy数组?

时间:2015-09-30 23:30:57

标签: python arrays numpy

我有一个numpy数组:

var async = require('asyncawait/async');
var await = require('asyncawait/await');
var Promise = require('bluebird');

var foo = async.cps(function() {
    var resultA = await (Promise.promisify(bar));
    return 111;
});

function bar(callback) {
  setTimeout(callback, 1000);
}

function moo() {
  foo(function(err, res) {
    console.log(res);
  });
}

moo();

我希望将具有最后值array([[ 0.68597575, 0.05544651, -1. ], [ 0.33494648, 0.46368367, 1. ], [ 0.42486765, 0.89427025, 1. ], [ 0.62408611, 0.64633939, 1. ], [ 0.37087957, 0.53077302, -1. ], [ 0.21664159, 0.10786084, -1. ], [ 0.13003626, 0.18425347, -1. ]]) 的行乘以-1,并将其替换为实际矩阵。

我试过了:

-1

但我知道会有比这更简单的东西。

2 个答案:

答案 0 :(得分:2)

您可以通过执行以下操作来避免for循环:

data[data[:, -1] == -1] *= -1

答案 1 :(得分:1)

我更喜欢分两步执行此操作,原因有两个:(i)更容易理解代码; (ii)通常在第一步中创建的布尔索引可以在数据管道的其他地方重用

创建选择行的布尔索引:

idx = M[:,-1] == -1

对索引数据进行转换:

M[idx,] *= -1