我有一个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
但我知道会有比这更简单的东西。
答案 0 :(得分:2)
您可以通过执行以下操作来避免for循环:
data[data[:, -1] == -1] *= -1
答案 1 :(得分:1)
我更喜欢分两步执行此操作,原因有两个:(i)更容易理解代码; (ii)通常在第一步中创建的布尔索引可以在数据管道的其他地方重用
创建选择行的布尔索引:
idx = M[:,-1] == -1
对索引数据进行转换:
M[idx,] *= -1