Python 打印不带标签的结果';数组';在列表中?
我想在没有标记数组的情况下显示我的结果,在列表中的哪个数组之前 我的结果是:Python 打印不带标签的结果';数组';在列表中?,python,numpy,Python,Numpy,我想在没有标记数组的情况下显示我的结果,在列表中的哪个数组之前 我的结果是: [array([202.632 , 565.74 , 177.258 , 0.01627 , 0.00008 , 0.00919 , 0.00963 , 0.02756 , 0.0717 , 0.833 , 0.03515 , 0.04265 , 0.0646 , 0.10546 , 0.07889 , 14.989 ,
[array([202.632 , 565.74 , 177.258 , 0.01627 , 0.00008 ,
0.00919 , 0.00963 , 0.02756 , 0.0717 , 0.833 ,
0.03515 , 0.04265 , 0.0646 , 0.10546 , 0.07889 ,
14.989 , 0.427627, 0.775708, -4.892495, 0.262281,
2.910213, 0.270173, 1. ]), array([116.879 , 131.897 , 108.153 , 0.00788 , 0.00007 ,
0.00334 , 0.00493 , 0.01003 , 0.02645 , 0.265 ,
0.01394 , 0.01625 , 0.02137 , 0.04183 , 0.00786 ,
22.603 , 0.540049, 0.813432, -4.476755, 0.262633,
1.827012, 0.326197, 1. ]), array([169.774 , 191.759 , 151.451 , 0.01568 , 0.00009 ,
0.00863 , 0.00946 , 0.02589 , 0.08143 , 0.821 ,
0.03804 , 0.05426 , 0.08808 , 0.11411 , 0.0753 ,
12.359 , 0.56161 , 0.793509, -3.297668, 0.414758,
3.413649, 0.457533, 1. ])]
我希望我的结果是这样的:
[[202.632 , 565.74 , 177.258 , 0.01627 , 0.00008 ,
0.00919 , 0.00963 , 0.02756 , 0.0717 , 0.833 ,
0.03515 , 0.04265 , 0.0646 , 0.10546 , 0.07889 ,
14.989 , 0.427627, 0.775708, -4.892495, 0.262281,
2.910213, 0.270173, 1. ], [116.879 , 131.897 , 108.153 , 0.00788 , 0.00007 ,
0.00334 , 0.00493 , 0.01003 , 0.02645 , 0.265 ,
0.01394 , 0.01625 , 0.02137 , 0.04183 , 0.00786 ,
22.603 , 0.540049, 0.813432, -4.476755, 0.262633,
1.827012, 0.326197, 1. ], [169.774 , 191.759 , 151.451 , 0.01568 , 0.00009 ,
0.00863 , 0.00946 , 0.02589 , 0.08143 , 0.821 ,
0.03804 , 0.05426 , 0.08808 , 0.11411 , 0.0753 ,
12.359 , 0.56161 , 0.793509, -3.297668, 0.414758,
3.413649, 0.457533, 1. ]]
看起来像一个包含数组元素(或者可能不止一个)的列表: 我们可以迭代列表,并将每个数组转换为它的等效列表:
In [14]: [x.tolist() for x in alist]
Out[14]: [[1, 2, 3]]
这是一个嵌套列表。或者我们可以把它变成一个数组:
In [15]: arr = np.stack(alist)
In [16]: arr
Out[16]: array([[1, 2, 3]])
In [17]: print(arr)
[[1 2 3]]
数组的str
显示不包括array
字。但是,只有当组成列表的形状都相同时,此堆栈才会起作用
无论如何,我们必须将数组列表转换成其他的东西——数组或嵌套列表。我们不能仅仅改变列表的显示方式
当我复制粘贴您的列表时(使用array=np.array
),我会看到一个列表,显示为:
In [35]: yrlist
Out[35]:
[array([ 2.026320e+02, 5.657400e+02, 1.772580e+02, 1.627000e-02,
8.000000e-05, 9.190000e-03, 9.630000e-03, 2.756000e-02,
7.170000e-02, 8.330000e-01, 3.515000e-02, 4.265000e-02,
6.460000e-02, 1.054600e-01, 7.889000e-02, 1.498900e+01,
4.276270e-01, 7.757080e-01, -4.892495e+00, 2.622810e-01,
2.910213e+00, 2.701730e-01, 1.000000e+00]),
array([ 1.168790e+02, 1.318970e+02, 1.081530e+02, 7.880000e-03,
7.000000e-05, 3.340000e-03, 4.930000e-03, 1.003000e-02,
....
3.413649e+00, 4.575330e-01, 1.000000e+00])]
In [42]: print(str([a.tolist() for a in yrlist]))
[[202.632, 565.74, 177.258, 0.01627, 8e-05, 0.00919, 0.00963, 0.02756, 0.0717, 0.833, 0.03515, 0.04265, 0.0646, 0.10546, 0.07889, 14.989, 0.427627, 0.775708, -4.892495, 0.262281, 2.910213, 0.270173, 1.0], [116.879, 131.897, 108.153, 0.00788, 7e-05, 0.00334, 0.00493, 0.01003, 0.02645, 0.265, 0.01394, 0.01625, 0.02137, 0.04183, 0.00786, 22.603, 0.540049, 0.813432, -4.476755, 0.262633, 1.827012, 0.326197, 1.0], [169.774, 191.759, 151.451, 0.01568, 9e-05, 0.00863, 0.00946, 0.02589, 0.08143, 0.821, 0.03804, 0.05426, 0.08808, 0.11411, 0.0753, 12.359, 0.56161, 0.793509, -3.297668, 0.414758, 3.413649, 0.457533, 1.0]]
请注意,数组不仅显示“array”标记,而且还显示具有相同格式的所有元素,科学表示法是该范围值的最佳表示法
如果我为每个数组指定一个dtype=object
In [37]: olist
Out[37]:
[array([202.632, 565.74, 177.258, 0.01627, 8e-05, 0.00919, 0.00963,
0.02756, 0.0717, 0.833, 0.03515, 0.04265, 0.0646, 0.10546, 0.07889,
14.989, 0.427627, 0.775708, -4.892495, 0.262281, 2.910213,
0.270173, 1.0], dtype=object),
....
0.0753, 12.359, 0.56161, 0.793509, -3.297668, 0.414758, 3.413649,
0.457533, 1.0], dtype=object)]
每个数组元素显示的内容与输入的内容相同。但是还有dtype
符号
对于此较长阵列列表,tolist方法显示为:
In [35]: yrlist
Out[35]:
[array([ 2.026320e+02, 5.657400e+02, 1.772580e+02, 1.627000e-02,
8.000000e-05, 9.190000e-03, 9.630000e-03, 2.756000e-02,
7.170000e-02, 8.330000e-01, 3.515000e-02, 4.265000e-02,
6.460000e-02, 1.054600e-01, 7.889000e-02, 1.498900e+01,
4.276270e-01, 7.757080e-01, -4.892495e+00, 2.622810e-01,
2.910213e+00, 2.701730e-01, 1.000000e+00]),
array([ 1.168790e+02, 1.318970e+02, 1.081530e+02, 7.880000e-03,
7.000000e-05, 3.340000e-03, 4.930000e-03, 1.003000e-02,
....
3.413649e+00, 4.575330e-01, 1.000000e+00])]
In [42]: print(str([a.tolist() for a in yrlist]))
[[202.632, 565.74, 177.258, 0.01627, 8e-05, 0.00919, 0.00963, 0.02756, 0.0717, 0.833, 0.03515, 0.04265, 0.0646, 0.10546, 0.07889, 14.989, 0.427627, 0.775708, -4.892495, 0.262281, 2.910213, 0.270173, 1.0], [116.879, 131.897, 108.153, 0.00788, 7e-05, 0.00334, 0.00493, 0.01003, 0.02645, 0.265, 0.01394, 0.01625, 0.02137, 0.04183, 0.00786, 22.603, 0.540049, 0.813432, -4.476755, 0.262633, 1.827012, 0.326197, 1.0], [169.774, 191.759, 151.451, 0.01568, 9e-05, 0.00863, 0.00946, 0.02589, 0.08143, 0.821, 0.03804, 0.05426, 0.08808, 0.11411, 0.0753, 12.359, 0.56161, 0.793509, -3.297668, 0.414758, 3.413649, 0.457533, 1.0]]
没有np.array
display产生的任何换行
为列表中的每个阵列执行独立打印:
In [46]: for a in yrlist:
...: print(a)
...:
[ 2.026320e+02 5.657400e+02 1.772580e+02 1.627000e-02 8.000000e-05
9.190000e-03 9.630000e-03 2.756000e-02 7.170000e-02 8.330000e-01
3.515000e-02 4.265000e-02 6.460000e-02 1.054600e-01 7.889000e-02
1.498900e+01 4.276270e-01 7.757080e-01 -4.892495e+00 2.622810e-01
2.910213e+00 2.701730e-01 1.000000e+00]
[ 1.168790e+02 1.318970e+02 1.081530e+02 7.880000e-03 7.000000e-05
3.340000e-03 4.930000e-03 1.003000e-02 2.645000e-02 2.650000e-01
1.394000e-02 1.625000e-02 2.137000e-02 4.183000e-02 7.860000e-03
2.260300e+01 5.400490e-01 8.134320e-01 -4.476755e+00 2.626330e-01
1.827012e+00 3.261970e-01 1.000000e+00]
[ 1.697740e+02 1.917590e+02 1.514510e+02 1.568000e-02 9.000000e-05
8.630000e-03 9.460000e-03 2.589000e-02 8.143000e-02 8.210000e-01
3.804000e-02 5.426000e-02 8.808000e-02 1.141100e-01 7.530000e-02
1.235900e+01 5.616100e-01 7.935090e-01 -3.297668e+00 4.147580e-01
3.413649e+00 4.575330e-01 1.000000e+00]
把整件事变成一个阵列
In [48]: print(np.array(yrlist))
[[ 2.026320e+02 5.657400e+02 1.772580e+02 1.627000e-02 8.000000e-05
9.190000e-03 9.630000e-03 2.756000e-02 7.170000e-02 8.330000e-01
3.515000e-02 4.265000e-02 6.460000e-02 1.054600e-01 7.889000e-02
1.498900e+01 4.276270e-01 7.757080e-01 -4.892495e+00 2.622810e-01
2.910213e+00 2.701730e-01 1.000000e+00]
[ 1.168790e+02 1.318970e+02 1.081530e+02 7.880000e-03 7.000000e-05
3.340000e-03 4.930000e-03 1.003000e-02 2.645000e-02 2.650000e-01
1.394000e-02 1.625000e-02 2.137000e-02 4.183000e-02 7.860000e-03
2.260300e+01 5.400490e-01 8.134320e-01 -4.476755e+00 2.626330e-01
1.827012e+00 3.261970e-01 1.000000e+00]
[ 1.697740e+02 1.917590e+02 1.514510e+02 1.568000e-02 9.000000e-05
8.630000e-03 9.460000e-03 2.589000e-02 8.143000e-02 8.210000e-01
3.804000e-02 5.426000e-02 8.808000e-02 1.141100e-01 7.530000e-02
1.235900e+01 5.616100e-01 7.935090e-01 -3.297668e+00 4.147580e-01
3.413649e+00 4.575330e-01 1.000000e+00]]
你可以使用和
下面的代码非常接近链接的Python文档中的代码片段:
import sys
import reprlib
import builtins
class MyRepr(reprlib.Repr):
def repr_ndarray(self, obj, level):
return repr(obj).replace('array(', '')[:-1]
myrepr = MyRepr()
def mydisplayhook(value):
if value is None:
return
# Set '_' to None to avoid recursion
builtins._ = None
text = myrepr.repr(value)
try:
sys.stdout.write(text)
except UnicodeEncodeError:
bytes = text.encode(sys.stdout.encoding, 'backslashreplace')
if hasattr(sys.stdout, 'buffer'):
sys.stdout.buffer.write(bytes)
else:
text = bytes.decode(sys.stdout.encoding, 'strict')
sys.stdout.write(text)
sys.stdout.write("\n")
builtins._ = value
sys.displayhook = mydisplayhook
现在举个例子:
[np.arange(5)]
# [[0, 1, 2, 3, 4]]
注意:这也可能会影响其他类型的显示。(我认为,reprlib.Repr
默认情况下会缩短时间。)为了防止出现这种情况,请查看。可能是列表(map(list,arr))
?请包括您的尝试。请查看并相应调整您的问题。谢谢我应该加上一个限定条件——我正在使用ipython
,它自己可以很好地打印,尤其是列表。