1.最终结果
array = np.array([[1.2, -1.2], [2.5, -2.5]])
expanded_array = expand(array)
print(expanded_array)
[[ 2. -2.]
[ 3. -3.]]
2.取整知识
2.1.向上取整
取大于或等于给定数的最小整数
import math
# 示例
number = 4.1
result = math.ceil(number)
print(result) # 输出:5
number = -4.1
result = math.ceil(number)
print(result) # 输出:-4
2.2.向下取整
取小于或等于给定数的最大整数
import math
# 示例
number = 4.1
result = math.ceil(number)
print(result) # 输出:5
number = -4.1
result = math.floor(number)
print(result) # 输出:-5
3.其他知识
3.1.遍历数组(忽视维度)
3.1.1.展平
import numpy as np
# 示例:创建一个三维数组
array = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
# 展平数组并遍历
for element in array.flatten():
print(element)
3.1.2.np函数
import numpy as np
# 示例:创建一个三维数组
array = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
# 使用 numpy.nditer 遍历数组
for element in np.nditer(array):
print(element)
3.1.3.递归
import numpy as np
def iterate_array(array):
if isinstance(array, np.ndarray):
for element in array:
iterate_array(element)
else:
print(array)
# 示例:创建一个三维数组
array = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
# 调用递归函数
iterate_array(array)
3.2.整合代码
3.2.1.逐元素操作
numpy.ndenumerate
是一个生成器,可以同时返回数组中每个元素的索引和值
import numpy as np
def expand(array):
for index, element in np.ndenumerate(array):
if element > 0:
array[index] = np.ceil(element)
else:
array[index] = np.floor(element)
return array
3.2.2.布尔索引(效率高)
直接对数组中的元素进行批量操作
import numpy as np
def expand(array):
# 正数向上取整
array[array > 0] = np.ceil(array[array > 0])
# 负数向下取整
array[array < 0] = np.floor(array[array < 0])
return array
3.2.3.where向量化处理(效率高)
根据条件选择性地修改数组中的值
import numpy as np
def expand(array):
return np.where(array > 0, np.ceil(array), np.floor(array))
4.最终代码
import numpy as np
def expand(array):
return np.where(array > 0, np.ceil(array), np.floor(array))