我有一个numpy数组filtered__rows,由LAS数据[x, y, z, intensity, classification]组成。我创建了一个点的cKDTree,并找到了最近邻query_ball_point,它是该点及其邻点的索引列表。是否有办法过滤filtered__rows,以创建一个仅包含其索引在query_ball_point返回的列表中的点的数组?
filtered__rows
[x, y, z, intensity, classification]
cKDTree
query_ball_point
gfttwv5a1#
看起来您只需要一个基本的整数数组索引:
filter_indices = [1,3,5] np.array([11,13,155,22,0xff,32,56,88])[filter_indices]
4bbkushb2#
numpy.take对于多维阵列是有用的并且工作良好。
numpy.take
import numpy as np filter_indices = [1, 2] array = np.array([[1, 2, 3, 4, 5], [10, 20, 30, 40, 50], [100, 200, 300, 400, 500]]) axis = 0 print(np.take(array, filter_indices, axis)) # [[ 10 20 30 40 50] # [100 200 300 400 500]] axis = 1 print(np.take(array, filter_indices, axis)) # [[ 2 3] # [ 20 30] # [200 300]]
wfsdck303#
使用Docs:https://docs.scipy.org/doc/numpy-1.13.0/user/basics.indexing.html下面的实现应该适用于某个numpy ndarray的任意数量的维度/形状。首先,我们需要一组多维索引和一些示例数据:
import numpy as np y = np.arange(35).reshape(5,7) print(y) indexlist = [[0,1], [0,2], [3,3]] print ('indexlist:', indexlist)
要真正提取直观结果,技巧是使用转置:
indexlisttranspose = np.array(indexlist).T.tolist() print ('indexlist.T:', indexlisttranspose) print ('y[indexlist.T]:', y[ tuple(indexlisttranspose) ])
进行以下终端输出:
y: [[ 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]] indexlist: [[0, 1], [0, 2], [3, 3]] indexlist.T: [[0, 0, 3], [1, 2, 3]] y[indexlist.T]: [ 1 2 24]
元组...修复了一个未来的警告,我们可以像这样引起:第一个
lfapxunr4#
你知道多维数组的意思吗?通过为每个索引提供一个1d数组,可以将其扩展为多维数组,因此对于2d数组
filter_indices=np.array([[1,0],[0,1]]) array=np.array([[0,1],[1,2]]) print(array[filter_indices[:,0],filter_indices[:,1]])
将为您提供:[1,1]Scipy解释了如果您调用以下命令会发生什么情况:print(array[filter_indices])个文件-https://docs.scipy.org/doc/numpy-1.13.0/user/basics.indexing.html
[1,1]
print(array[filter_indices])
q35jwt9p5#
最快的方法是X[tuple(index.T)],其中X是包含元素的ndarray,index是希望检索的索引的ndarray。
X[tuple(index.T)]
X
index
5条答案
按热度按时间gfttwv5a1#
看起来您只需要一个基本的整数数组索引:
4bbkushb2#
numpy.take
对于多维阵列是有用的并且工作良好。wfsdck303#
使用Docs:https://docs.scipy.org/doc/numpy-1.13.0/user/basics.indexing.html下面的实现应该适用于某个numpy ndarray的任意数量的维度/形状。
首先,我们需要一组多维索引和一些示例数据:
要真正提取直观结果,技巧是使用转置:
进行以下终端输出:
元组...修复了一个未来的警告,我们可以像这样引起:
第一个
lfapxunr4#
你知道多维数组的意思吗?
通过为每个索引提供一个1d数组,可以将其扩展为多维数组,因此对于2d数组
将为您提供:
[1,1]
Scipy解释了如果您调用以下命令会发生什么情况:
print(array[filter_indices])
个文件-https://docs.scipy.org/doc/numpy-1.13.0/user/basics.indexing.html
q35jwt9p5#
最快的方法是
X[tuple(index.T)]
,其中X
是包含元素的ndarray,index
是希望检索的索引的ndarray。