2024-06-16 14:11:36 发布
网友
因此,我的代码如下所示:
import numpy as np data = np.load('Tbars.npy') print(np.shape(data))
我得到的结果是(50,500,130)
(50,500,130)
我想去掉y维度(500)中的最后10个元素;所以我得到了(50,490,130)
(50,490,130)
运行:
data[:, :-10, :]
:-10是选择相应维度中所有元素的方法, 除了最后10个
:-10
较小尺寸数据的示例:
创建大小为(2,10,3)的数组:
dims = (2, 10, 3) data = np.arange(dims[0] * dims[1] * dims[2]).reshape(dims)
因此,它包含:
array([[[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 20], [21, 22, 23], [24, 25, 26], [27, 28, 29]], [[30, 31, 32], [33, 34, 35], [36, 37, 38], [39, 40, 41], [42, 43, 44], [45, 46, 47], [48, 49, 50], [51, 52, 53], [54, 55, 56], [57, 58, 59]]])
然后检索第二维度中除最后一个2之外的数据元素:
b = data[:, :-2, :]
结果是:
array([[[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 20], [21, 22, 23]], [[30, 31, 32], [33, 34, 35], [36, 37, 38], [39, 40, 41], [42, 43, 44], [45, 46, 47], [48, 49, 50], [51, 52, 53]]])
而且b.shape是(2, 8, 3)
b.shape
(2, 8, 3)
如果要删除nDim维度中的最后一个nDrop元素 在arr数组中,定义一个函数:
def myDrop(arr, nDim, nDrop): idx = [slice(None)] * arr.ndim idx[nDim] = slice(None, -nDrop) return arr[tuple(idx)]
然后,检索一个数据切片,其中没有最后10个元素 尺寸1,运行:
b = myDrop(data, 1, 10)
与上述结果相同
如果您想要更短的函数(实际上是一个单行程序),请将其定义为:
def myDrop2(arr, nDim, nDrop): return arr[tuple([slice(None, -nDrop) if i == nDim else slice(None) for i in range(arr.ndim)])]
初始答案,针对要删除的固定维度和要删除的元素数
运行:
:-10
是选择相应维度中所有元素的方法, 除了最后10个较小尺寸数据的示例:
创建大小为(2,10,3)的数组:
因此,它包含:
然后检索第二维度中除最后一个2之外的数据元素:
结果是:
而且
b.shape
是(2, 8, 3)
更一般的解决方案
如果要删除nDim维度中的最后一个nDrop元素 在arr数组中,定义一个函数:
然后,检索一个数据切片,其中没有最后10个元素 尺寸1,运行:
与上述结果相同
如果您想要更短的函数(实际上是一个单行程序),请将其定义为:
相关问题 更多 >
编程相关推荐