簡體   English   中英

使用列表在NumPy中定義dtypes?

[英]Define dtypes in NumPy using a list?

我剛剛遇到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, 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類型,例如strfloat 如果鍵入help(np.dtype)您將看到許多如何指定np.dtypes示例。 (我只提了幾個。)

請注意,np.array需要一個元組列表。 這是相當特別的。

列表列表引發TypeError: expected a readable buffer object

A(元組的元組)或(元組的元組)引發ValueError: setting an array element with a sequence

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM