按列值重新设置numpy多级数组的范围
我希望通过numpy数组的一列的值重新设置numpy数组的范围。意义-按列值重新设置numpy多级数组的范围,numpy,Numpy,我希望通过numpy数组的一列的值重新设置numpy数组的范围。意义- [[0, 0], [583, 0], [1166, 0], [1365, 0], [0, 583], [583, 583], [1166, 583], [1365, 583]] 到 我目前使用“硬编码”形状对其进行整形,但我希望自动进行整形。您可以使用numpy整形对该阵列进行整形 将numpy导入为np array=np.数组([[0,0],[583,0],[1166,0],[1365,0],[0583],[583583
[[0, 0], [583, 0], [1166, 0], [1365, 0], [0, 583], [583, 583], [1166, 583], [1365, 583]]
到
我目前使用“硬编码”形状对其进行整形,但我希望自动进行整形。您可以使用numpy整形对该阵列进行整形
将numpy导入为np
array=np.数组([[0,0],[583,0],[1166,0],[1365,0],[0583],[583583],[1166583],[1365583])
数组。重塑(2,4,2)
输出:
array([[[ 0, 0],
[ 583, 0],
[1166, 0],
[1365, 0]],
[[ 0, 583],
[ 583, 583],
[1166, 583],
[1365, 583]]])
详情请访问
谢谢下面是代码,它涵盖了第二行值的可变数量的情况:
X = np.array([[0, 0], [583, 0], [1166, 0], [1365, 0], [0, 583], [583, 583], [1166, 583], [1365, 583],
[0, 1], [581, 1], [1166, 0], [1365, 0], [3, 1], [2, 583], [1166, 583], [1365, 1]])
out = []
vs = set(X[:,-1])
for v in vs:
idxs = X[:,-1] == v
out.append(np.sort(X[idxs],axis=0))
out = np.array(out)
谢谢,但我就是这么做的。我希望能够在一个具有可变大小的数组上执行此操作。您可以使用任何类型的可变大小可变大小,也就是说,我不知道给定数组的大小以及其中一列中唯一数字的数量。您不需要知道给定数组的大小,但希望将该数组转换为固定大小?可以吗?
X = np.array([[0, 0], [583, 0], [1166, 0], [1365, 0], [0, 583], [583, 583], [1166, 583], [1365, 583],
[0, 1], [581, 1], [1166, 0], [1365, 0], [3, 1], [2, 583], [1166, 583], [1365, 1]])
out = []
vs = set(X[:,-1])
for v in vs:
idxs = X[:,-1] == v
out.append(np.sort(X[idxs],axis=0))
out = np.array(out)