作为pythonlist的成员打印numpy数组

作为pythonlist的成员打印numpy数组,python,arrays,numpy,Python,Arrays,Numpy,我正在试验numpy阵列,我有一个非常简单的例子: list = [2, 3] list.append(np.array([3.2, 9.0, 7.6])) 如果我使用printlist,它会打印:[2,3,数组[3.2,9,7.6]] 但是如果我使用printlist[-1],它只打印[3.29.7.6] 有人能为我解释一下,如果我将numpy数组作为python列表的最后一个元素打印,为什么它打印时没有数组、括号和数字之间的comas? 非常感谢这似乎是因为print函数在其参数上隐式调用

我正在试验numpy阵列,我有一个非常简单的例子:

list = [2, 3]
list.append(np.array([3.2, 9.0, 7.6]))
如果我使用printlist,它会打印:[2,3,数组[3.2,9,7.6]]

但是如果我使用printlist[-1],它只打印[3.29.7.6] 有人能为我解释一下,如果我将numpy数组作为python列表的最后一个元素打印,为什么它打印时没有数组、括号和数字之间的comas?
非常感谢

这似乎是因为print函数在其参数上隐式调用了u str

但是,如果在列表中嵌入了对象,为了表示列表中的内容,将调用列表中所有元素的

a = np.linspace(0, 10, 11)
print(a)
# [ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]
print(repr(a))
# array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])
您可以在打印时将数组强制转换为列表,而数组不会显示:

print([a])  # not good
# array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])
print([list(a)])  # better
# [[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]]

这似乎是因为print函数隐式地在其参数上调用了_str

但是,如果在列表中嵌入了对象,为了表示列表中的内容,将调用列表中所有元素的

a = np.linspace(0, 10, 11)
print(a)
# [ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]
print(repr(a))
# array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])
您可以在打印时将数组强制转换为列表,而数组不会显示:

print([a])  # not good
# array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])
print([list(a)])  # better
# [[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]]

这是因为numpy数组在打印时看起来像一个列表

但是试试这个:

>>> import numpy as np

>>> l = [2, 3]
>>> l.append(np.array([3.2, 9.0, 7.6]))
>>> isinstance(l[-1], list)
False
>>> l2 = [3, 2]
>>> isinstance(l2, list)
True

您将测试数组实际上不是列表。

这是因为numpy数组在打印时看起来像列表

但是试试这个:

>>> import numpy as np

>>> l = [2, 3]
>>> l.append(np.array([3.2, 9.0, 7.6]))
>>> isinstance(l[-1], list)
False
>>> l2 = [3, 2]
>>> isinstance(l2, list)
True

您将测试数组实际上不是一个列表。

python中的对象通常有两种不同的方法,它们返回自己的字符串表示以供打印

它们是str和repr,它们有不同的用途,你可以阅读

要打印某些内容,首先必须将其转换为字符串。正常情况下,print将尝试使用_str___进行此转换

在列表上执行打印操作会导致调用列表。_ustr_uuuu,然后它会尝试将所有内部元素转换为字符串以进行打印。列表用于转换这些元素的调用是_repr_;

因此,当您打印一个列表时,列表会得到每个元素的_repr__,但当您只打印该元素时,打印会得到该元素的_str

您看到的是numpy数组中的uu repr_u_u和u str_u_u之间的差异

输出:

'[1 2 3]'
'array([1, 2, 3])'

python中的对象通常有两种不同的方法,它们返回自己的字符串表示以供打印

它们是str和repr,它们有不同的用途,你可以阅读

要打印某些内容,首先必须将其转换为字符串。正常情况下,print将尝试使用_str___进行此转换

在列表上执行打印操作会导致调用列表。_ustr_uuuu,然后它会尝试将所有内部元素转换为字符串以进行打印。列表用于转换这些元素的调用是_repr_;

因此,当您打印一个列表时,列表会得到每个元素的_repr__,但当您只打印该元素时,打印会得到该元素的_str

您看到的是numpy数组中的uu repr_u_u和u str_u_u之间的差异

输出:

'[1 2 3]'
'array([1, 2, 3])'