簡體   English   中英

numpy - 如何舍入數組的最后兩列

[英]numpy - how to round last two columns of an array

將此數組的par1和par2列中的每個項目舍入為6位小數的正確方法是什么。 下面是我到目前為止嘗試但我得到一個奇怪的錯誤。

(我想這也行不通,因為它會圍繞第一列?)

a = numpy.array([('54641', 5.2283950300822005e-19, 0.99986935998398196),
   ('19463068', 1.9641846381816301e-11, 3.9584362981756201e-24),
   ('19500889', 3.0296847410896202e-11, 1.05569703377661e-11),
   ('19528632', 3.5188395912917703e-11, 1.4213535554705201e-09)], 
  dtype=[('pos', 'S100'), ('par1', '<f8'), ('par2', '<f8')])
a = numpy.around(a, decimals=6)

奇怪的錯誤(任何想法為什么這么說?)

Traceback (most recent call last):
  File "msg/combine.py", line 244, in <module>
    a = numpy.around(a, decimals=6)
  File "/usr/local/msg/lib/python2.6/site-packages/numpy/core/fromnumeric.py", line 2611, in around
    return round(decimals, out)
TypeError: return arrays must be of ArrayType

不確定你是否可以不循環執行此操作:

>>> for col in ['par1','par2']:
...     a[col] = numpy.around(a[col],2)
...
>>> a
array([('54641', 0.0, 1.0), ('19463068', 0.0, 0.0), ('19500889', 0.0, 0.0),
       ('19528632', 0.0, 0.0)],
      dtype=[('pos', 'S100'), ('par1', '<f8'), ('par2', '<f8')])

當然,您可以將pandas用於結構化數組:

>>> import pandas as pd
>>> data = pd.DataFrame(a)
>>> data[['par1','par2']] = numpy.around(data[['par1','par2']], 2)
>>> data
        pos  par1  par2
0     54641     0     1
1  19463068     0     0
2  19500889     0     0

暫無
暫無

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

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