编辑
经过一些摆弄之后,到目前为止,我已经隔离了以下状态:
一维数组在直接输入变量时提供两个不同的地址,而在使用print()时仅提供一个地址
2D数组(或矩阵)在直接输入变量时提供三个不同的地址,在使用print()时提供两个地址
3D数组在直接输入变量时提供两个不同的地址,而在使用print()时仅给出一个(显然与一维数组相同)
像这样:
>>> a = numpy.array([1,2,3], dtype="int32")
>>> a.data
>>> a.data
>>> a.data
>>> a.data
>>> a.data
>>> print(a.data)
>>> print(a.data)
>>> print(a.data)
>>> print(a.data)
>>> print(a.data)
>>> d = numpy.array([[1,2,3]], dtype="int32")
>>> d.data
>>> d.data
>>> d.data
>>> d.data
>>> d.data
>>> d.data
>>> print(d.data)
>>> print(d.data)
>>> print(d.data)
>>> print(d.data)
>>> print(d.data)
>>> b = numpy.matrix([[1,2,3],[4,5,6]], dtype="int32")
>>> b.data
>>> b.data
>>> b.data
>>> b.data
>>> b.data
>>> print(b.data)
>>> print(b.data)
>>> print(b.data)
>>> print(b.data)
>>> print(b.data)
>>> c = numpy.matrix([[1,2,3],[4,5,6],[7,8,9]], dtype="int32")
>>> c.data
>>> c.data
>>> c.data
>>> c.data
>>> c.data
>>> c.data
>>> c.data
>>> print(c.data)
>>> print(c.data)
>>> print(c.data)
>>> print(c.data)
>>> print(c.data)
>>> e = numpy.array([[[0,1],[2,3]],[[4,5],[6,7]]], dtype="int32")
>>> e.data
>>> e.data
>>> e.data
>>> e.data
>>> e.data
>>> print(e.data)
>>> print(e.data)
>>> print(e.data)
原始帖子
我的印象是,仅在python控制台中输入一个变量,然后回显一个仅描述其值(和类型)的字符串。它的格式与print()的格式不同,但是我假设它们返回的值都相同。
当我尝试输出一个numpy对象的数据指针对象的地址时,每隔一次输入变量就会给我不同的值,而print()会给出相同的值。
这表明这两个操作的区别不仅在于输出的格式如何,还在于它们从何处获取信息。但是这些额外的差异到底由什么组成?
>>> a = numpy.array([0,1,2])
>>> a
array([0, 1, 2])
>>> print(a)
[0 1 2]
>>> print(a.data)
>>> print(a.data)
>>> print(a.data)
>>> a.data
>>> a.data
>>> a.data
>>> a.data
>>> a.data
python大神给出的解决方案
memoryview返回的a.data似乎在两个(或多个)视图之间交替。如果存储给定的a.data实例,则会得到一致的输出:
>>> a.data
>>> a.data
>>> t = a.data
>>> a.data
>>> a.data
>>> a.data
>>> a.data
>>> a.data
>>> a.data
>>> t
>>> t
>>> t
请注意,在上面的示例中,有3个地址轮换;我很确定这都是实现细节。我猜想其中涉及一些缓存,这意味着每次访问a.data时实际上并没有生成新视图。
您还可以确保您正在查看单独的视图对象:
>>> id(a.data)
140430643088968
>>> id(a.data)
140430643086280
>>> id(a.data)
140430643088968
>>> id(a.data)
140430643086280
因此,大多数困惑可能来自以下事实:a.data的属性符号会表明它是我们正在讨论的固定对象,而事实并非如此。
Python pytz时区函数返回的时区为9分钟 - python
由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:的泛型类 - java
我正在为SCJP / OCPJP学习,并且遇到了一个对我来说很奇怪的示例问题。该示例代码实例化了两个通用集合:List> list = new ArrayList>(); List extends Object> list2 = new ArrayList extends Object>(); …python异常行为中的LISTS(参考单个维度列表) - python
a = [0]*4 a[0]= 1 print(a) 根据Strange behavior of lists in python中解释的列表的行为,输出为[1,0,0,0],而应为[1,1,1,1],其中说*创建的是对对象的引用,而不是值的副本。请解释 python大神给出的解决方案 是的,使用重复运算符*创建对列表中对象的多个引用。但是,a[0] = 1不…Spacy如何将标记标签整体化? - python
在包含#标签(例如tweet)的句子中,spacy的令牌生成器将标签分为两个令牌:import spacy nlp = spacy.load('en') doc = nlp(u'This is a #sentence.') [t for t in doc] 输出:[This, is, a, #, sentence, .…timedelta64 [ns]-> FutureWarning:不建议传递timedelta64-dtype数据,在将来的版本中会引发TypeError - python
假设df['time']来自类型timedelta64[ns]和df['a']以及df['b']来自类型float64,可以如下绘制两个系列:import pandas as pd import matplotlib.pyplot as plt fig, axs = plt.subplots(2, …