Python NumPy切片提供索引器错误:数组的索引太多
我从如下文件中读取了一个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列吗?首先,您的数据没有列。它只是一个一
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的里程碑,所以接受了他的答案。