我在试验numpy数组,我有一个非常简单的例子:
list = [2, 3]
list.append(np.array([3.2, 9.0, 7.6]))
如果我做print(list)
,它会打印:[2, 3, array([3.2, 9. , 7.6])]
但是如果我做print(list[-1])
,它只打印[3.2 9. 7.6]
有人能为我解释一下,如果我打印numpy数组作为python列表的最后一个元素,为什么打印时没有“数组”、括号和数字之间的comas?
非常感谢
Tags:
似乎是因为
print
函数隐式地调用了它的参数__str__
。你知道吗但是,如果将对象嵌入列表中,为了表示列表中的内容,
__repr__
将调用列表中的所有元素:您可以在打印时将数组强制转换为列表,
array
将不会显示:这是因为numpy数组在打印时看起来像一个列表。你知道吗
但试试这个:
您将测试数组实际上不是一个列表。你知道吗
python中的对象通常有两个不同的方法,它们为
print
返回自己的字符串表示。你知道吗它们是
__str__()
和__repr__()
,它们有不同的用途,您可以阅读here。你知道吗要打印某些内容,首先必须将其转换为字符串。通常
print
会尝试使用__str__
进行此转换。你知道吗对列表执行
print
操作会导致对list.__str__()
的调用,然后它会尝试将其所有内部元素转换为字符串以进行打印。列表用于转换这些元素的调用是__repr__()
。你知道吗所以当你
print
一个list
时,list
得到每个元素的__repr__
,但是当你只打印那个元素时,print
得到那个元素的__str__
。你知道吗你看到的是
numpy
数组中__repr__
和__str__
之间的区别。你知道吗输出:
相关问题 更多 >
编程相关推荐