假设我们在行和列中都有一个numpy 2d数组(或Pandas DataFrame),其长度可变。
在numpy ndarray或pandas DataFrame中,是否有一种快速方法可以检查所有元素并剪切到预先指定的最大值(如果任何元素大于预先指定的最大值),哪个更简单?
答案 0 :(得分:2)
pandas
- 使用DataFrame.clip_upper
:
np.random.seed(2018)
df = pd.DataFrame(np.random.randint(10, size=(5,5)))
print (df)
0 1 2 3 4
0 6 2 9 5 4
1 6 9 9 7 9
2 6 6 1 0 6
3 5 6 7 0 7
4 8 7 9 4 8
print (df.clip_upper(5))
0 1 2 3 4
0 5 2 5 5 4
1 5 5 5 5 5
2 5 5 1 0 5
3 5 5 5 0 5
4 5 5 5 4 5
Numpy
- 使用numpy.clip
:
np.random.seed(2018)
arr = np.random.randint(10, size=(5,5))
print (arr)
[[6 2 9 5 4]
[6 9 9 7 9]
[6 6 1 0 6]
[5 6 7 0 7]
[8 7 9 4 8]]
print (np.clip(arr, arr.min(), 5))
[[5 2 5 5 4]
[5 5 5 5 5]
[5 5 1 0 5]
[5 5 5 0 5]
[5 5 5 4 5]]