Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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,我用numpy.genfromtxt读入以下对象: A = [(4, 'A', 3750.5), (4, 'B', 3252.6), (8, 'A', 3350.5), (8, 'B', 3152.6)] 4 A 3750.5 4 B 3270.5 8 A 3480.5 8 B 3590.5 我想对它进行numpy索引,但我不能,因为这不是numpy数组。这是一个列表数组 获取第一列中有“4”的所有行的第三列的最佳方法是什么 我尝试了A[A[:,0]==4]

我用
numpy.genfromtxt
读入以下对象:

A = [(4, 'A', 3750.5), 
     (4, 'B', 3252.6),
     (8, 'A', 3350.5), 
     (8, 'B', 3152.6)]
4 A 3750.5
4 B 3270.5
8 A 3480.5
8 B 3590.5
我想对它进行numpy索引,但我不能,因为这不是numpy数组。这是一个列表数组

获取第一列中有“4”的所有行的第三列的最佳方法是什么

我尝试了
A[A[:,0]==4]
,但解释器抱怨“索引器错误:索引无效”

编辑:

这是我正在使用的python程序:

import numpy as np

A = np.genfromtxt( "text.txt" , dtype=( int , "|S10", float))

A_array = np.asarray(A, dtype=object)

print A
print A_array
文件
text.txt

A = [(4, 'A', 3750.5), 
     (4, 'B', 3252.6),
     (8, 'A', 3350.5), 
     (8, 'B', 3152.6)]
4 A 3750.5
4 B 3270.5
8 A 3480.5
8 B 3590.5
这是输出:

[(4, 'A', 3750.5) (4, 'B', 3270.5) (8, 'A', 3480.5) (8, 'B', 3590.5)]
[(4, 'A', 3750.5) (4, 'B', 3270.5) (8, 'A', 3480.5) (8, 'B', 3590.5)]
我错过了什么

In [24]: A_array = numpy.asarray(A, dtype=object)

In [25]: A_array[A_array[:,0] == 4]
Out[25]:
array([[4, A, 3750.5],
       [4, B, 3252.6]], dtype=object)

如果数据列有你想跟踪的语义,考虑将元组列表直接加载到A中,并给它们列标签。逻辑索引的工作原理类似:

In [27]: A_df = pandas.DataFrame(A, columns=['Col1', 'Col2', 'Col3'])

In [28]: A_df
Out[28]:
   Col1 Col2    Col3
0     4    A  3750.5
1     4    B  3252.6
2     8    A  3350.5
3     8    B  3152.6

In [29]: A_df.Col1 == 4
Out[29]:
0     True
1     True
2    False
3    False
Name: Col1

In [30]: A_df[A_df.Col1 == 4]
Out[30]:
   Col1 Col2    Col3
0     4    A  3750.5
1     4    B  3252.6

如果数据列有你想跟踪的语义,考虑将元组列表直接加载到A中,并给它们列标签。逻辑索引的工作原理类似:

In [27]: A_df = pandas.DataFrame(A, columns=['Col1', 'Col2', 'Col3'])

In [28]: A_df
Out[28]:
   Col1 Col2    Col3
0     4    A  3750.5
1     4    B  3252.6
2     8    A  3350.5
3     8    B  3152.6

In [29]: A_df.Col1 == 4
Out[29]:
0     True
1     True
2    False
3    False
Name: Col1

In [30]: A_df[A_df.Col1 == 4]
Out[30]:
   Col1 Col2    Col3
0     4    A  3750.5
1     4    B  3252.6

首先,在
A
中的列表元素之间需要逗号,否则会出现语法错误:

A = [(4, 'A', 3750.5),
     (4, 'B', 3252.6),
     (8, 'A', 3350.5), 
     (8, 'B', 3152.6)]
接下来,您可以使用a非常简洁地获得您想要的:

[ row[2] for row in A if row[0] == 4 ]
结果:

[3750.5, 3252.6]

首先,在
A
中的列表元素之间需要逗号,否则会出现语法错误:

A = [(4, 'A', 3750.5),
     (4, 'B', 3252.6),
     (8, 'A', 3350.5), 
     (8, 'B', 3152.6)]
接下来,您可以使用a非常简洁地获得您想要的:

[ row[2] for row in A if row[0] == 4 ]
结果:

[3750.5, 3252.6]

A
实际上是元组列表,而不是列表数组。为什么有人在数组中插入逗号?如果我打印A,则没有逗号。它可能是一个元组列表吗?您使用了
a=…
表示您正在分配数据。当你“打印”数据时,你没有说
A=…
,你只是打印内容。当您使用
a=…
赋值给变量时,您需要
=
符号右侧的值来计算有效的Python对象,如果没有逗号,这是不正确的。确保示例中的数据便于其他人在Python设置中使用也是一种礼貌。如果没有逗号,将该文本复制/粘贴到解释器会产生错误。我将根据需要尝试插入逗号。我解释错了。第一个矩阵是打印命令的输出。问题已更新。抱歉
A
实际上是一个元组列表,而不是列表数组。为什么有人在数组中插入逗号?如果我打印A,则没有逗号。它可能是一个元组列表吗?您使用了
a=…
表示您正在分配数据。当你“打印”数据时,你没有说
A=…
,你只是打印内容。当您使用
a=…
赋值给变量时,您需要
=
符号右侧的值来计算有效的Python对象,如果没有逗号,这是不正确的。确保示例中的数据便于其他人在Python设置中使用也是一种礼貌。如果没有逗号,将该文本复制/粘贴到解释器会产生错误。我将根据需要尝试插入逗号。我解释错了。第一个矩阵是打印命令的输出。问题已更新。对不起,嗯。。我试过你的第一个解决办法。当我打印A和A_数组时,它们看起来完全相同,并且A_数组上的索引命令与A上的一样失败。除非我能看到您正在执行的特定代码,否则您的注释是不明确的。它对我很有效,而且确实是
numpy
中的标准解决方案。此外,如果在使用
print
打印它们时
A
A_数组
显示相同,则肯定还有另一个错误。第一个是Python
列表
,它在控制台上的打印方式与第二个非常不同,后者是
numpy.ndarray
。例如,
A_数组
将始终打印一些
dtype
字段及其实际数据内容,而
列表
.Hmm不存在这些字段。。我试过你的第一个解决办法。当我打印A和A_数组时,它们看起来完全相同,并且A_数组上的索引命令与A上的一样失败。除非我能看到您正在执行的特定代码,否则您的注释是不明确的。它对我很有效,而且确实是
numpy
中的标准解决方案。此外,如果在使用
print
打印它们时
A
A_数组
显示相同,则肯定还有另一个错误。第一个是Python
列表
,它在控制台上的打印方式与第二个非常不同,后者是
numpy.ndarray
。例如,
A_数组
总是将一些
dtype
字段与其实际数据内容一起打印,而
列表
则不存在这些字段。