给出以下数组(实际上,我将使用更大的数组):
ar = np.random.randn(2,10)
ar.sort()
array([[-2.08265194, -1.54667461, -0.42901332, 0.00365949, 0.60151581,
0.69619798, 0.69741627, 0.97086132, 1.79259285, 3.2797454 ],
[-2.06961226, -1.25542722, -0.44750088, -0.27424209, -0.22824756,
0.4234969 , 0.61014409, 0.93816367, 1.11788673, 1.74181219]])
对于每个元素,我想:
示例(最小值,第一个元素):将-2.08265194替换为-1.54667461-(1.54667461 * 10)= -17.01342072
所需结果:
array([[-17.01342072, -1.54667461, -0.42901332, 0.00365949, 0.60151581,
0.69619798, 0.69741627, 0.97086132, 1.79259285, 19.718521349999996 ],
[-13.80969942, -1.25542722, -0.44750088, -0.27424209, -0.22824756,
0.4234969 , 0.61014409, 0.93816367, 1.11788673, 12.29675403]])
答案 0 :(得分:0)
这些似乎实际上是有效的。除非有一种更快的方法,否则我将使用它们(我将模拟设置为100万次迭代,因此速度是关键)。
outliers = 1
ar[:,0:outliers] = ar[:,outliers:outliers+1] - np.abs(ar[:,outliers:outliers+1])*10
ar[:,-outliers:] = ar[:,-outliers - 1:-outliers] + np.abs(ar[:,-outliers - 1:-outliers])*10