脾气暴躁-将否定元素提升为非整数幂

时间:2019-05-26 00:23:49

标签: python numpy

import numpy as np
from scipy import stats

np.random.seed(42)
data = sorted(stats.norm.rvs(size=1000))

我想将data提高到3/4的幂。

我尝试过:

np.power(data, 3/4) # doesn't work because power is not integer
np.float_power(data, 3/4) # returns nan for negative elements
scipy.linalg.fractional_matrix_power(data, 3/4) # doesn't work because data is 1D array, not matrix

如何使用numpy做到这一点?

2 个答案:

答案 0 :(得分:1)

np.power(data, 3./4)

将导致电源浮动。因为3/4将返回一个整数。

答案 1 :(得分:1)

无需显式调用np.power;通过在使用sorted(甚至使用np.sort之前执行计算),我们可以使用运算符:

np.sort(data ** (3 / 4))

由于负数的根将很复杂,因此数组将只能提供nan

因此,解决方案是将其强制转换为dtype floats

np.complex

输出:

data = np.sort(stats.norm.rvs(size=10).astype(np.complex) ** (3 / 4))
print(data)