将矩阵数据从 CSV 导入 numpy 数组,切片结果出现问题
Importing matrix data from CSV into a numpy array, Issue with slicing the result
我有多个 CSV 文件要读取到 numpy 数组中,需要使用一种高效的方法。目前我可以正确读取数据,但结果不灵活,无法对输出执行切片。
import numpy
from array import array
inputfile = "C:/temp.csv")
mx=numpy.genfromtxt(inputfile , names=True, dtype=int, delimiter=',')
使用上面的代码我可以输入数据,我的结果如下所示:
array([(1, 84, 79, 11, 35, 24, 22, 40), (2, 74, 34, 94, 33, 32, 27, 79),
(3, 19, 57, 59, 54, 86, 44, 56), (4, 67, 57, 35, 41, 46, 39, 20),
(5, 62, 20, 65, 38, 85, 83, 64), (6, 68, 65, 71, 35, 41, 56, 85),
(7, 61, 75, 91, 48, 55, 31, 82)],
dtype=[('Zone', '<i4'), ('1', '<i4'), ('2', '<i4'), ('3', '<i4'), ('4', '<i4'), ('5', '<i4'), ('6', '<i4'), ('7', '<i4')])
现在我想执行一些我不能执行的切片。有人可以帮我从
中切出一个选定的列吗
你有一个 structured array。要访问个人 'columns',您可以使用他们的字段名称(例如 mx['Zone']
访问第一个 'column')。
您可以使用.view()
方法将其转换为二维标准数组:
mx_2d = mx.view('<i4').reshape(mx.shape[0], -1)
现在您可以在列维度中使用普通切片索引:
print(mx_2d[:, :2])
# [[ 1 84]
# [ 2 74]
# [ 3 19]
# [ 4 67]
# [ 5 62]
# [ 6 68]
# [ 7 61]]
我有多个 CSV 文件要读取到 numpy 数组中,需要使用一种高效的方法。目前我可以正确读取数据,但结果不灵活,无法对输出执行切片。
import numpy
from array import array
inputfile = "C:/temp.csv")
mx=numpy.genfromtxt(inputfile , names=True, dtype=int, delimiter=',')
使用上面的代码我可以输入数据,我的结果如下所示:
array([(1, 84, 79, 11, 35, 24, 22, 40), (2, 74, 34, 94, 33, 32, 27, 79),
(3, 19, 57, 59, 54, 86, 44, 56), (4, 67, 57, 35, 41, 46, 39, 20),
(5, 62, 20, 65, 38, 85, 83, 64), (6, 68, 65, 71, 35, 41, 56, 85),
(7, 61, 75, 91, 48, 55, 31, 82)],
dtype=[('Zone', '<i4'), ('1', '<i4'), ('2', '<i4'), ('3', '<i4'), ('4', '<i4'), ('5', '<i4'), ('6', '<i4'), ('7', '<i4')])
现在我想执行一些我不能执行的切片。有人可以帮我从
中切出一个选定的列吗你有一个 structured array。要访问个人 'columns',您可以使用他们的字段名称(例如 mx['Zone']
访问第一个 'column')。
您可以使用.view()
方法将其转换为二维标准数组:
mx_2d = mx.view('<i4').reshape(mx.shape[0], -1)
现在您可以在列维度中使用普通切片索引:
print(mx_2d[:, :2])
# [[ 1 84]
# [ 2 74]
# [ 3 19]
# [ 4 67]
# [ 5 62]
# [ 6 68]
# [ 7 61]]