加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用列表在NumPy中定义dtypes?

发布时间:2020-12-20 12:16:53 所属栏目:Python 来源:网络整理
导读:我刚刚遇到NumPy dtypes的问题.基本上我正在尝试创建一个如下所示的表(然后使用rec2csv保存它): name1 name2 name3 . . . name1 # # #name2 # # #name2 # # #... 在我尝试添加名称标签之前,已经计算了矩阵(中心的数值数组).我试过使用以下代码: dt = dtype
我刚刚遇到NumPy dtypes的问题.基本上我正在尝试创建一个如下所示的表(然后使用rec2csv保存它):

name1   name2   name3 . . . 
name1  #       #      #
name2  #       #      #
name2  #       #      #
.
.
.

在我尝试添加名称标签之前,已经计算了矩阵(中心的数值数组).我试过使用以下代码:

dt = dtype({'names' : tuple(blah),'formats' : tuple(fmt)}) 
    ReadArray = array(tuplelist,dtype=dt)

其中tuplelist是一个行列表(即行[name1,#,#…]),blah是一个字符串列表(即名称,blah = [‘name1′,’name2’,… ])和fmt是格式列表,s(即fmt = [str,float,…]).

我得到的错误如下:

Traceback (most recent call last):

  File "<stdin>",line 1,in <module>
  File "table_calc_try2.py",line 152,in table_calc_try2
    dt = dtype({'names' : tuple(blah),'formats' : tuple(fmt)}) 
TypeError: data type not understood

有人可以帮忙吗?

谢谢!

解决方法

以下代码可能会有所帮助:

import numpy as np

dt = np.dtype([('name1','|S10'),('name2','<f8')])
tuplelist=[
    ('n1',1.2),('n2',3.4),]
arr = np.array(tuplelist,dtype=dt)

print(arr['name1'])
# ['n1' 'n2']
print(arr['name2'])
# [ 1.2  3.4]

您当前的问题是np.dtype要求格式说明符为numpy类型,例如’| S10’或’< f8'而不是Python类型,例如str或float.如果键入help(np.dtype),您将看到许多如何指定np.dtypes的示例. (我只提了几个.) 请注意,np.array需要一个元组列表.这是相当特别的. 列表列表引发TypeError:期望一个可读的缓冲区对象. A(元组的元组)或(元组的元组)引发ValueError:用序列设置数组元素.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读