如何处理Numpy数组:固定首元素后求后项减前项并将末位设为0?
解决方案
方法一:拼接差值并替换末尾元素
先保留原数组的第一个元素,用np.diff计算后续元素的差值,再将两部分拼接,最后把结果的最后一位设为0:
import numpy as np a = np.array([10,20,22,44]) result = np.concatenate([[a[0]], np.diff(a)]) result[-1] = 0 print(result) # 输出: [10 10 2 0]
方法二:直接创建新数组赋值
初始化一个和原数组同形状的空数组,逐个赋值:第一个元素直接取原数组值,中间元素用当前位减前一位,最后一位设为0,逻辑更直观:
import numpy as np a = np.array([10,20,22,44]) result = np.empty_like(a) result[0] = a[0] result[1:-1] = a[1:-1] - a[:-2] result[-1] = 0 print(result) # 输出: [10 10 2 0]
方法三:利用np.roll实现
通过np.roll将数组右移一位,计算原数组和右移数组的差值,再还原第一个元素,最后把末尾设为0:
import numpy as np a = np.array([10,20,22,44]) result = a - np.roll(a, 1) result[0] = a[0] result[-1] = 0 print(result) # 输出: [10 10 2 0]
内容的提问来源于stack exchange,提问作者pro
相关产品推荐
相关产品推荐

