小编Usa*_*agi的帖子

Python中未分配的字符串如何在内存中有地址?

谁可以给我解释一下这个?所以我一直在python中使用id()命令,并遇到了这个:

>>> id('cat')
5181152
>>> a = 'cat'
>>> b = 'cat'
>>> id(a)
5181152
>>> id(b)
5181152
Run Code Online (Sandbox Code Playgroud)

除了一部分之外,这对我有意义:字符串'cat'在我将其分配给变量之前在内存中有一个地址.我可能只是不明白内存寻址是如何工作的,但是有人可以向我解释这一点,或者至少告诉我应该读一下内存寻址吗?

所以这一切都很好,但这让我更加困惑:

>>> a = a[0:2]+'t'
>>> a
'cat'
>>> id(a)
39964224
>>> id('cat')
5181152
Run Code Online (Sandbox Code Playgroud)

这让我感到很奇怪,因为'cat'是一个地址为5181152的字符串,但是新的a具有不同的地址.所以,如果内存中有两个'cat'字符串,为什么不为id('cat')打印两个地址?我最后的想法是连接与地址的变化有关,所以我尝试了这个:

>>> id(b[0:2]+'t')
39921024
>>> b = b[0:2]+'t'
>>> b
'cat'
>>> id(b)
40000896
Run Code Online (Sandbox Code Playgroud)

我本来可以预测ID是相同的,但事实并非如此.思考?

python memory-address

45
推荐指数
4
解决办法
2010
查看次数

Python:具有非线性最小二乘的双曲线高斯拟合

我对数学的了解有限,这就是我可能被困的原因.我有一个光谱,我试图适应两个高斯峰.我可以适应最大的峰值,但我无法适应最小的峰值.我知道我需要对两个峰值的高斯函数求和,但我不知道哪里出了问题.显示当前输出的图像:

电流输出

蓝线是我的数据,绿线是我目前适合的.在我的数据中主峰左侧有一个肩膀,我目前正在尝试使用以下代码:

import matplotlib.pyplot as pt
import numpy as np
from scipy.optimize import leastsq
from pylab import *

time = []
counts = []


for i in open('/some/folder/to/file.txt', 'r'):
    segs = i.split()
    time.append(float(segs[0]))
    counts.append(segs[1])

time_array = arange(len(time), dtype=float)
counts_array = arange(len(counts))
time_array[0:] = time
counts_array[0:] = counts


def model(time_array0, coeffs0):
    a = coeffs0[0] + coeffs0[1] * np.exp( - ((time_array0-coeffs0[2])/coeffs0[3])**2 )
    b = coeffs0[4] + coeffs0[5] * np.exp( - ((time_array0-coeffs0[6])/coeffs0[7])**2 ) 
    c = a+b
    return c


def residuals(coeffs, counts_array, time_array):
    return …
Run Code Online (Sandbox Code Playgroud)

python gaussian scipy least-squares

17
推荐指数
2
解决办法
2万
查看次数

为什么添加到列表中会做不同的事情?

>>> aList = []
>>> aList += 'chicken'
>>> aList
['c', 'h', 'i', 'c', 'k', 'e', 'n']
>>> aList = aList + 'hello'


Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    aList = aList + 'hello'
TypeError: can only concatenate list (not "str") to list
Run Code Online (Sandbox Code Playgroud)

我不明白为什么做一个list += (something)并list = list + (something)做不同的事情.另外,为什么要将+=字符串拆分成要插入列表的字符?

python list

13
推荐指数
2
解决办法
1876
查看次数

Android软件堆栈的哪个部分通过耳机插孔处理命令?(例如,使用耳机接听电话)

Android处理通过耳机插孔连接的耳机发送的命令在哪里?具体来说,播放/暂停和接听电话?这是埋藏在操作系统中还是可以通过API访问?

android

13
推荐指数
1
解决办法
359
查看次数

Python模式匹配.匹配'c [任意数量的连续a,b,或c或b,c或a等] t'

抱歉标题,我无法想出一个干净的方式来问我的问题.

在Python中我想匹配一个表达式'c [some stuff] t',其中[some stuff]可以是任意数量的连续a,b或c并且以任何顺序.

例如,这些工作: 'ct','cat','cbbt','caaabbct','cbbccaat'

但这些不是: 'cbcbbaat','caaccbabbt'

编辑:a,b和c只是一个例子,但我真的希望能够将它扩展到更多的字母.我对正则表达式和非正则表达式解决方案感兴趣.

python regex pattern-matching

12
推荐指数
2
解决办法
700
查看次数

在乳胶文件中间更改纸张尺寸?

有谁知道如何在乳胶文件中更改这些长度参数?

  • \ paperwidth
  • \ paperheight

我想为单个页面定义页面大小(可能是两个或三个).我尝试了几何包的v5.3,它只添加了一些新功能; 喜欢\newgeometry.不幸的是,\newgeometry不能用于重新定义\ paperheight和\ paperwidth.

任何帮助将非常感激.

parameters formatting layout latex

11
推荐指数
3
解决办法
1万
查看次数

使用自然语言处理进行逻辑谬误检测和/或识别

是否存在用于检测文本中有缺陷的逻辑参数的包或方法?

我希望能找到一些不适用于学术环境(如逻辑课程)的文本.这可能是一个延伸,但我想要一些能够识别逻辑尝试使用的地方并确定逻辑错误.可能的用途是在编辑文章中标记错误.

我不需要任何抛光的东西.我不介意努力开发一些东西,所以我现在真的在寻找野外的东西.

logic nlp machine-learning sentiment-analysis

11
推荐指数
1
解决办法
2575
查看次数

如何将单行 JSON 文件转换为人类可读的多行文件?

我正在尝试编写一个脚本来创建可以导入到 Firefox 中作为书签的 JSON 文件。为了检查 Firefox 使用的书签结构,我已将所有书签导出到 JSON 文件。

问题在于 Firefox 导出的是单行文件(非常难以阅读)。是否有实用程序可以将此文件转换为可读的缩进多行文件?

json

6
推荐指数
1
解决办法
3万
查看次数

在将列表分配给numpy数组之前使用列表进行数据读取是否有效?

我有一个大的CSV数据文件 - 大约1,444,000行数据 - 我正在读取并转换为numpy数组.我读了22列中的三列.这就是我目前正在做的事情:

import numpy as np
import csv

fid = open('data.csv', 'r')
csvfile = csv.reader(fid, dialect='excel', delimiter=',')
csvfile.next() # to skip header

t = []
u = []
w = []
for line in csvfile:
  t += [line[1]] # time
  u += [line[-4]] # velocity x
  w += [line[-2]] # velocity z
t = np.array(t, dtype='float')  
u = np.array(u, dtype='float')
w = np.array(w, dtype='float')
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:这有效吗?我本来打算将新数据附加到循环中的现有numpy数组,直到我读到整个数组必须每次都在内存中移动.

python csv arrays performance numpy

2
推荐指数
1
解决办法
282
查看次数