Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.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 NumPy切片提供索引器错误:数组的索引太多_Python_Numpy - Fatal编程技术网

Python NumPy切片提供索引器错误:数组的索引太多

Python NumPy切片提供索引器错误:数组的索引太多,python,numpy,Python,Numpy,我从如下文件中读取了一个numpy数组示例: import numpy as np data = np.array([(b'M', 119., 76.), (b'M', 114., 73.), (b'F', 124., 79.)], dtype=[('gender', 'S1'), ('bps', '<f8'), ('bpd', '<f8')]) 在没有列表理解的情况下,是否有更简单的方法获取第一列? 我们可以解压g、b、p=*数据等3列吗?首先,您的数据没有列。它只是一个一

我从如下文件中读取了一个numpy数组示例:

import numpy as np
data = np.array([(b'M', 119.,  76.), (b'M', 114.,  73.), (b'F', 124.,  79.)],
dtype=[('gender', 'S1'), ('bps', '<f8'), ('bpd', '<f8')])
在没有列表理解的情况下,是否有更简单的方法获取第一列?


我们可以解压g、b、p=*数据等3列吗?首先,您的
数据没有列。它只是一个一维数组

data.shape
(3, )
因此,当您传递2d索引时,切片将提升
索引器

尝试:


首先,您的
数据没有列。它只是一个一维数组

data.shape
(3, )
因此,当您传递2d索引时,切片将提升
索引器

尝试:


这不是一个数组,您有
数组(tuple,tuple,tuple)

将其转换为
ndarray
,然后可以使用列和索引进行切片

np.array(data.tolist())[:,0]
array([b'M', b'M', b'F'], dtype='|S5')
更多信息:

np.array(data.tolist()).shape
(3, 3)

这不是一个数组,您有
数组(tuple,tuple,tuple)

将其转换为
ndarray
,然后可以使用列和索引进行切片

np.array(data.tolist())[:,0]
array([b'M', b'M', b'F'], dtype='|S5')
更多信息:

np.array(data.tolist()).shape
(3, 3)

您制作了一个一维结构化数组(使用复合
dtype
):

这个数组的元素是:

In [721]: data[0]
Out[721]: (b'M', 119., 76.)
In [722]: type(_)
Out[722]: numpy.void
我们称之为
记录
,但它确实以元组的形式显示(和索引)。请注意,创建表达式使用元组列表

解包数组的一种方法是迭代字段名:

In [734]: data.dtype.names
Out[734]: ('gender', 'bps', 'bpd')
In [735]: a,b,c = [data[name] for name in data.dtype.names]
In [736]: a
Out[736]: array([b'M', b'M', b'F'], dtype='|S1')
In [737]: b
Out[737]: array([119., 114., 124.])
In [738]: c
Out[738]: array([76., 73., 79.])

您制作了一个一维结构化数组(使用复合
dtype
):

这个数组的元素是:

In [721]: data[0]
Out[721]: (b'M', 119., 76.)
In [722]: type(_)
Out[722]: numpy.void
我们称之为
记录
,但它确实以元组的形式显示(和索引)。请注意,创建表达式使用元组列表

解包数组的一种方法是迭代字段名:

In [734]: data.dtype.names
Out[734]: ('gender', 'bps', 'bpd')
In [735]: a,b,c = [data[name] for name in data.dtype.names]
In [736]: a
Out[736]: array([b'M', b'M', b'F'], dtype='|S1')
In [737]: b
Out[737]: array([119., 114., 124.])
In [738]: c
Out[738]: array([76., 73., 79.])

它有
np.array
一开始,我以为里面是什么,我们得到
numpy n-darry
@astro123看看形状。当它转换成3,3得到它后,将使用
data[:,None]
,这可能比
tolist()
更简单。它有
np.array
开始时,我想无论里面是什么,我们都会得到
numpy n-darry
@astro123看看形状。转换为3后,3获得它,将使用
数据[:,无]
,这可能比
tolist()更简单。
。祝贺@Chris获得1k!祝贺@Chris获得1k!感谢您的输入,老实说,我不知道
data.dtype.fields
。这是
索引错误解决方案
解包
的完整答案,抱歉,但是Chris是第一个回答的,跨越了1k的里程碑,所以接受了他的答案。感谢您的输入,老实说,我不知道
data.dtype.fields
。这是
索引错误解决方案
解包
的完整答案,很抱歉,但Chris是第一个回答的人,跨越了1k的里程碑,所以接受了他的答案。