Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python创建结构_Python_Arrays_Numpy - Fatal编程技术网

python创建结构

python创建结构,python,arrays,numpy,Python,Arrays,Numpy,我试图对文件中的数据执行一些操作。我已经设法使用np.loadtxt加载了该文件 data = np.loadtxt('original_data.txt', dtype={'names': ('fileName', 'object_no', 'instance', 'tilt', 'pan_no', 'panValue'),'formats': ('S70', 'f5', 'f5', 'f5', 'f5', 'S5')}) 我发现我可以使用name\u new=data['fileName'

我试图对文件中的数据执行一些操作。我已经设法使用np.loadtxt加载了该文件

data = np.loadtxt('original_data.txt', dtype={'names': ('fileName', 'object_no', 'instance', 'tilt', 'pan_no', 'panValue'),'formats': ('S70', 'f5', 'f5', 'f5', 'f5', 'S5')})
我发现我可以使用
name\u new=data['fileName']
访问单个列。(1-D阵列)

最好的方法是什么,以一种结构(相当于matlab)的格式,这样我就可以从单个数组中访问每个元素

原始数据:

[ ('RGBD_Crop_file/hand_towel_5_2_260_crop.png', 23.0, 5.0, 2.0, 260.0, 'NA')
('RGBD_Crop_file/lightbulb_1_4_76_crop.png', 28.0, 1.0, 4.0, 76.0, '132.3') 
('RGBD_Crop_file/apple_2_2_97_crop.png', 0.0, 2.0, 2.0, 97.0, 'NA')
('RGBD_Crop_file/stapler_6_2_35_crop.png', 46.0, 6.0, 2.0, 35.0, 'NA')  
('RGBD_Crop_file/toothpaste_2_2_119_crop.png', 49.0, 2.0, 2.0, 119.0, 'NA') 
('RGBD_Crop_file/garlic_4_2_201_crop.png', 20.0, 4.0, 2.0, 201.0, '301.9')]

如果我理解正确,你想要的是这样的:

with open("filename") as f:
    items = [line.split() for line in f]
如果要计算每个值,而不是所有字符串,可以使用:

    items = [map(eval, line.split()) for line in f]

基于您的“原始数据”,我认为您的
数据
数组打印如下:

array([ ('RGBD_Crop_file/hand_towel_5_2_260_crop.png', 23.0, 5.0, 2.0, 260.0, 'NA'),
       ('RGBD_Crop_file/lightbulb_1_4_76_crop.png', 28.0, 1.0, 4.0, 76.0, '132.3'),
       ('RGBD_Crop_file/apple_2_2_97_crop.png', 0.0, 2.0, 2.0, 97.0, 'NA'),
       ('RGBD_Crop_file/stapler_6_2_35_crop.png', 46.0, 6.0, 2.0, 35.0, 'NA'),
       ('RGBD_Crop_file/toothpaste_2_2_119_crop.png', 49.0, 2.0, 2.0, 119.0, 'NA'),
       ('RGBD_Crop_file/garlic_4_2_201_crop.png', 20.0, 4.0, 2.0, 201.0, '301.9')], 
      dtype=[('fileName', 'S70'), ('object_no', '<f4'), ('instance', '<f4'), ('tilt', '<f4'), ('pan_no', '<f4'), ('panValue', 'S5')])
可以使用查看行或元素

data[3]
它也有复杂的数据类型,尽管它显示为一个简单的
元组

您可以跨多个字段进行数学运算,例如:

data['tilt']*data['pan_no']
或跨一个字段的值:

np.mean(data['tilt'])

你还想做什么?这与在
MATLAB
结构中访问数据有何不同?

我认为命名元组对这类事情很有用:

import collections
DataRow = collections.namedtuple( "DataRow", ['column1','column2'] )
d = DataRow( "data in column1", "data in column2" )

在应用程序中,您将创建一个命名元组数组。我相信命名元组提供了您所要求的“struct”功能。

您的确切意思是什么?Python字典、列表或对象可能是一个不错的选择。请详细说明
从单个数组访问每个元素。另外,请发布几行数据-可能会将
文件名
字段缩短一点。读取文件中的每一行,并将每一行转换为Python列表的条目。如何将行转换为条目将取决于您的数据。[(“RGBD_Crop_文件/hand_毛巾_5_2_260_Crop.png',23.0,5.0,2.0,260.0,'NA”)(“RGBD_Crop_文件/lightbulb_1_4_76_Crop.png',28.0,1.0,4.0,76.0,'132.3”)(“RGBD_Crop_文件/apple_2_2_97_Crop.png',0,2.0,2.0,2.0,2.0,'97,'NA')。。。,('RGBD_-Crop_文件/stapper_6_2_35_-Crop.png',46.0,6.0,2.0,35.0,'NA')('RGBD_-Crop_文件/牙膏_2_2_119_-Crop.png',49.0,2.0,2.0,2.0,119.0,'NA')('RGBD__-Crop文件/大蒜_4_2_201.png',20.0,4.0,4.0,4.0,4.0,201.0,'301.9')]谢谢..看起来我不需要将其作为numpy arrayPablo的
不是一个数组,只是一个列表。你不能在列表上执行很多类似MATLAB的操作。
import collections
DataRow = collections.namedtuple( "DataRow", ['column1','column2'] )
d = DataRow( "data in column1", "data in column2" )