如何在Numpy中提取指定行,将8×6数组转换为目标4×6数组?
解决方案
你的问题出在切片的起始位置与步长设置上,data[::2]会从第0行开始每隔一行取一行,拿到的是索引0、2、4、6的行,和预期结果不符。以下是两种正确的实现方式:
方法1:直接指定目标行索引
通过索引列表直接选取需要的行(原始数组的第3、4、7、8行,对应索引2、3、6、7):
import numpy as np data = [ [76,34,56,32,55,66], [99,23,11,34,45,32], [87,98,87,23,12,77], [78,98,89,28,91,72], [76,42,45,23,56,87], [81,22,34,42,81,23], [91,23,45,67,45,34], [87,98,23,45,23,55] ] data = np.array(data) result = data[[2, 3, 6, 7]] print(result)
方法2:切片拼接
先分别取从索引2、3开始,步长为4的行,再将结果沿行方向拼接:
import numpy as np data = [ [76,34,56,32,55,66], [99,23,11,34,45,32], [87,98,87,23,12,77], [78,98,89,28,91,72], [76,42,45,23,56,87], [81,22,34,42,81,23], [91,23,45,67,45,34], [87,98,23,45,23,55] ] data = np.array(data) result = np.concatenate([data[2::4], data[3::4]], axis=0) print(result)
两种方法都能得到你想要的4×6数组:
array([[87, 98, 87, 23, 12, 77], [78, 98, 89, 28, 91, 72], [91, 23, 45, 67, 45, 34], [87, 98, 23, 45, 23, 55]])
内容的提问来源于stack exchange,提问作者stack offer
相关产品推荐
相关产品推荐

