是否有办法将非字符串元素放在numpy /数组中居中

问题描述 投票:0回答:1

要在中心打印数组索引,我尝试了numpy.defchararray.center()但这仅适用于字符串。因此输出为['-abc-','-a--']等。我希望我的输出以浮点值居中]

arr2 = np.array(list(map(float, input().split())))
print(arr2)

arr2 = [1.2 2.2 5.5 7.1]

print(np.char.center(np.floor(arr2), 4))
arrays python-3.x numpy center floor
1个回答
0
投票
In [169]: alist = [1.2, 2.2, 5.5, 7.1]                                                   
In [170]: arr2 = np.array(alist)                                                         
In [171]: arr2                                                                           
Out[171]: array([1.2, 2.2, 5.5, 7.1])

将数组转换为字符串dtype:

In [172]: arr2.astype(str)                                                               
Out[172]: array(['1.2', '2.2', '5.5', '7.1'], dtype='<U32')
In [173]: np.char.center(arr2.astype(str),10, '-')                                       
Out[173]: 
array(['---1.2----', '---2.2----', '---5.5----', '---7.1----'],
      dtype='<U10')

对于字符串操作,使用列表和列表理解通常与数组方法一样好。 np.char函数仅将字符串方法应用于数组的元素,而且速度不快。

In [174]: [('%.2f'%i).center(10,'-') for i in alist]                                     
Out[174]: ['---1.20---', '---2.20---', '---5.50---', '---7.10---']

在列表上进行迭代比在数组上进行迭代要快。

[较新的format方法具有居中选项:

In [175]: ['{:-^10.2f}'.format(i) for i in alist]                                        
Out[175]: ['---1.20---', '---2.20---', '---5.50---', '---7.10---']
© www.soinside.com 2019 - 2024. All rights reserved.