根据多个位置删除 numpy 数组中的项目
removing item in numpy array based on multiple positions
我有一个 numpy 数组列表,想根据特定位置删除元素。
[array([ 1, 2, nan, 4, nan]),
array([ 5, 6, 7, 8, 9]),
array([ 5, 6, 7, 8, 9])]
我需要获取所有 np.nan
的位置并删除相应的列,给我:
[array([ 1, 2, 4]),
array([ 5, 6, 8]),
array([ 5, 6, 8])]
没有循环一切,我不知道从哪里开始!
我想最简单的是
# arr is your original list
arr = [np.array([ 1, 2, np.nan, 4, np.nan]),
np.array([ 5, 6, 7, 8, 9]),
np.array([ 5, 6, 7, 8, 9])]
return_array = np.asarray(arr)[:, ~np.isnan(np.asarray(arr)).any(axis=0)]
print(return_array)
这将 return:
array([[1., 2., 4.],
[5., 6., 8.],
[5., 6., 8.]])
如果你想要 array
的 list
,那么你必须另外做:
return_array = [r for r in return_array]
鉴于您的数组列表名为 A:
A = [np.delete(row,np.argwhere(np.isnan(A[0]))) for row in A]
输出:
[array([1., 2., 4.]), array([5, 6, 8]), array([5, 6, 8])]
根据您的应用程序,使用 sams-studio 创建一个大 numpy
数组的方法可能会更好。对于大多数应用程序,我更喜欢这种方法。
我有一个 numpy 数组列表,想根据特定位置删除元素。
[array([ 1, 2, nan, 4, nan]),
array([ 5, 6, 7, 8, 9]),
array([ 5, 6, 7, 8, 9])]
我需要获取所有 np.nan
的位置并删除相应的列,给我:
[array([ 1, 2, 4]),
array([ 5, 6, 8]),
array([ 5, 6, 8])]
没有循环一切,我不知道从哪里开始!
我想最简单的是
# arr is your original list
arr = [np.array([ 1, 2, np.nan, 4, np.nan]),
np.array([ 5, 6, 7, 8, 9]),
np.array([ 5, 6, 7, 8, 9])]
return_array = np.asarray(arr)[:, ~np.isnan(np.asarray(arr)).any(axis=0)]
print(return_array)
这将 return:
array([[1., 2., 4.],
[5., 6., 8.],
[5., 6., 8.]])
如果你想要 array
的 list
,那么你必须另外做:
return_array = [r for r in return_array]
鉴于您的数组列表名为 A:
A = [np.delete(row,np.argwhere(np.isnan(A[0]))) for row in A]
输出:
[array([1., 2., 4.]), array([5, 6, 8]), array([5, 6, 8])]
根据您的应用程序,使用 sams-studio 创建一个大 numpy
数组的方法可能会更好。对于大多数应用程序,我更喜欢这种方法。