基于行号的NumPY地板或天花板

时间:2019-12-06 18:11:05

标签: python numpy

我有一个像这样的数组:

Exception in thread "main" java.lang.IllegalStateException: Cannot find employeeTable WHERE id=some-invalid-id-string

我希望根据行号在第3列上执行>>> arr array([[1, 2, 2.5], [3, 4, 3.75], [5, 6, 1.25], [7, 8, 1.3], [9, 0, 3.5]]) math.floor操作。因此,如果行号为奇数,则执行math.ceil操作,如果行号为偶数,则执行ceil操作。像这样:

floor

我该怎么做?

2 个答案:

答案 0 :(得分:2)

带切片-

arr[::2,2] = np.ceil(arr[::2,2])
arr[1::2,2] = np.floor(arr[1::2,2])

答案 1 :(得分:0)

您可以使用np.where,也可以使用np.floor代替math.floor,以对numpy数组进行操作。

mask = np.arange(len(arr))%2

arr[:,-1] = np.where(mask, np.floor(arr[:,-1]), np.ceil(arr[:,-1]))

# if you want to apply to all array, use
# np.where(mask[:,None], np.floor(arr), np.ceil(arr))

输出:

array([[1., 2., 3.],
       [3., 4., 3.],
       [5., 6., 2.],
       [7., 8., 1.],
       [9., 0., 4.]])
相关问题