小编ist*_*ern的帖子

Python3多重赋值和内存地址

看完这个这个,这是非常相似,我的问题,我仍然无法理解以下行为:

a = 257
b = 257
print(a is b) #False
a, b = 257, 257
print(a is b) #True
Run Code Online (Sandbox Code Playgroud)

打印时id(a),id(b)我可以看到在单独的行中分配值的变量具有不同的ID,而对于多个赋值,两个值具有相同的id:

a = 257
b = 257
print(id(a)) #139828809414512
print(id(b)) #139828809414224
a, b = 257, 257
print(id(a)) #139828809414416
print(id(b)) #139828809414416
Run Code Online (Sandbox Code Playgroud)

但是,通过说多个相同值的赋值总是创建指向同一个id的指针,从而解释这种行为是不可能的:

a, b = -1000, -1000  
print(id(a)) #139828809414448
print(id(b)) #139828809414288
Run Code Online (Sandbox Code Playgroud)

是否有一个明确的规则,它解释了变量何时变得相同id而不是?

编辑

相关信息:此问题中的代码以交互模式运行(ipython3)

python python-3.x multiple-assignment

10
推荐指数
1
解决办法
301
查看次数

正确选择块 - dask数组的规范

根据dask文档,可以通过以下三种方式之一指定块:

  • 像1000这样的块大小
  • 像(1000,1000)这样的块状形状
  • 所有维度的所有块的显式大小,如((1000,1000,500),(400,400))

您的块输入将被标准化并以第三个和最明确的形式存储.

在尝试使用visualize()函数了解块的工作方式之后,仍然有一些我不确定的事情:

如果输入是标准化的,那么我选择哪种输入形式是否重要?

Blocksize意味着每个块的大小为X,即1000. blockshape输入指定了什么?

给出blockhape输入时,参数的顺序是否有所不同?它与阵列/矩阵的形状有什么关系?

python dask

7
推荐指数
1
解决办法
1771
查看次数

Python PrettyTable:在表格标题上方添加标题

我有一个生成多个表的脚本,这些表都具有相同的列名和非常相似的数据.到目前为止,我一直在通过在它之前打印标题使每个表独特,即:

print("Results for Method Foo")
#table 1
print("Results for Method Bar")
#table 2 
Run Code Online (Sandbox Code Playgroud)

等等.但那不是很漂亮..

虽然它看起来像一个明显的用例,但我无法找到做这样的事情的选项:

PrettyTable标题

有关如何实现这一目标的任何想法?

万一它很重要:我使用的是python 3.4,带有virtualenv和漂亮版本0.7.2

python prettytable

7
推荐指数
1
解决办法
5649
查看次数

为什么dask中的点积比numpy慢

dask中的点积似乎比numpy慢得多:

import numpy as np
x_np = np.random.normal(10, 0.1, size=(1000,100))
y_np = x_np.transpose()
%timeit x_np.dot(y_np)
# 100 loops, best of 3: 7.17 ms per loop

import dask.array as da
x_dask = da.random.normal(10, 0.1, size=(1000,100), chunks=(5,5))
y_dask = x_dask.transpose()
%timeit x_dask.dot(y_dask)
# 1 loops, best of 3: 6.56 s per loop
Run Code Online (Sandbox Code Playgroud)

有谁知道这可能是什么原因?这里有什么我想念的吗?

python profiling numpy dask

4
推荐指数
1
解决办法
1146
查看次数

获取 scipy 稀疏矩阵中每一行的前 n 项

在阅读了这个类似的问题后,我仍然无法完全理解如何实施我正在寻找的解决方案。我有一个稀疏矩阵,即:

 import numpy as np
 from scipy import sparse
 arr = np.array([[0,5,3,0,2],[6,0,4,9,0],[0,0,0,6,8]])
 arr_csc = sparse.csc_matrix(arr)
Run Code Online (Sandbox Code Playgroud)

我想有效地获得每行的前 n 个项目,而不将稀疏矩阵转换为密集矩阵。最终结果应如下所示(假设 n=2):

 top_n_arr = np.array([[0,5,3,0,0],[6,0,0,9,0],[0,0,0,6,8]])
 top_n_arr_csc = sparse.csc_matrix(top_n_arr)
Run Code Online (Sandbox Code Playgroud)

scipy top-n python-3.x

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