Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在一行上打印'numpy.ndarray'_Python_Numpy_Multidimensional Array_Formatting - Fatal编程技术网

Python 在一行上打印'numpy.ndarray'

Python 在一行上打印'numpy.ndarray',python,numpy,multidimensional-array,formatting,Python,Numpy,Multidimensional Array,Formatting,在使用scipy/numpy时,我会将信息存储到numpy.ndarray >>> a array([[ 0.15555605, 0.51031528, 0.84580176, 0.06722675], [ 0.60556045, 0.62721023, -0.48979983, -0.04152777], [-0.78044785, 0.58837543, -0.21146041, -0.13568023], [ 0.

在使用scipy/numpy时,我会将信息存储到
numpy.ndarray

>>> a
array([[ 0.15555605,  0.51031528,  0.84580176,  0.06722675],
       [ 0.60556045,  0.62721023, -0.48979983, -0.04152777],
       [-0.78044785,  0.58837543, -0.21146041, -0.13568023],
       [ 0.        ,  0.        ,  0.        ,  1.        ]])
>>> print(a)
[[ 0.15555605  0.51031528  0.84580176  0.06722675]
 [ 0.60556045  0.62721023 -0.48979983 -0.04152777]
 [-0.78044785  0.58837543 -0.21146041 -0.13568023]
 [ 0.          0.          0.          1.        ]]
如何在单行上打印结果

我已经检查过:

>>> numpy.get_printoptions()
{'precision': 8, 'threshold': 1000, 'edgeitems': 3, 'linewidth': 75, 'suppress': False, 'nanstr': 'nan', 'infstr': 'inf', 'formatter': None}
但即使将
linewidth
设置为1000也不会改变这一点。有没有办法更改该类型的显示格式


是否也可以在每个数字之间添加逗号(如数组显示,但没有周围的
数组(…)
)?

为了将
numpy.array
打印成一行,您可以使用其内置函数
numpy.tolist()

例如:

import numpy as np

arr = np.array(((1, 2, 3), (4, 5, 6), (7, 8, 9)))
阵列的简单打印:

print(arr)
[[1, 2, 3]
 [4, 5, 6]
 [7, 8, 9]]
numpy.tolist()


例如,NumPy提供了一些自定义打印的方法

对于这个答案,我假设您有这样一个数组:

>>> import numpy as np
... arr = np.array([[ 0.15555605,  0.51031528,  0.84580176,  0.06722675],
...                 [ 0.60556045,  0.62721023, -0.48979983, -0.04152777],
...                 [-0.78044785,  0.58837543, -0.21146041, -0.13568023],
...                 [ 0.        ,  0.        ,  0.        ,  1.        ]])
  • 如果要显示所有项目,需要确保将
    threshold
    设置为
    np.inf
  • 如果希望将
    作为分隔符,可以将
    分隔符设置为
    ,'
但是,它没有删除换行符的选项,只是

  • max\u line\u width
    它给出了最内层尺寸的一行中打印的字符数。因此,当您设置
    max\u line\u width=np.inf
    时,它适用于1D数组,但不适用于ND数组
幸运的是,它返回一个可以操作的字符串,例如通过删除所有换行符:

>>> np.array2string(arr, threshold=np.inf, max_line_width=np.inf, separator=',').replace('\n', '')
'[[ 0.15555605, 0.51031528, 0.84580176, 0.06722675], [ 0.60556045, 0.62721023,-0.48979983,-0.04152777], [-0.78044785, 0.58837543,-0.21146041,-0.13568023], [ 0.        , 0.        , 0.        , 1.        ]]'
或使用正则表达式删除所有空白:

>>> import re
>>> re.sub(r'\s+', '', np.array2string(arr, threshold=np.inf, max_line_width=np.inf, separator=','))
'[[0.15555605,0.51031528,0.84580176,0.06722675],[0.60556045,0.62721023,-0.48979983,-0.04152777],[-0.78044785,0.58837543,-0.21146041,-0.13568023],[0.,0.,0.,1.]]'

同意这些不是真正的“短”,它们也比使用
.tolist()
转换为
列表
然后转换为字符串要慢,但这可能是一个很好的选择,特别是如果您希望自定义打印结果而不创建(可能巨大的)不必要的列表。

如果您希望数组“按原样”的话在一行中打印,您可以尝试
print(a.tolist())
list(arr)
使工作更简洁。
array.tolist()
list(arr)
不一样
print(list(arr))
给出了
[array([1,2,3])、array([4,5,6])、array([7,8,9])]
若要添加到这个列表中,若您有一个list对象,并且想要做同样的事情,只需将它包装在
np.array()
>>> import re
>>> re.sub(r'\s+', '', np.array2string(arr, threshold=np.inf, max_line_width=np.inf, separator=','))
'[[0.15555605,0.51031528,0.84580176,0.06722675],[0.60556045,0.62721023,-0.48979983,-0.04152777],[-0.78044785,0.58837543,-0.21146041,-0.13568023],[0.,0.,0.,1.]]'