我有一个4维numpy形状的阵列(N, N, Q, Q).所以给定一个行和列索引(i, j),mat[i,j]是一个QxQ矩阵.我想重塑这个数组来塑造(N*Q, N*Q)这样的形状
array([[[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]]],
[[[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15]]]])
Run Code Online (Sandbox Code Playgroud)
去
array([[ 0., 1., 4., 5.],
[ 2., 3., 6., 7.],
[ 8., 9., 12., 13.],
[ 10., 11., 14., 15.]])
Run Code Online (Sandbox Code Playgroud)
你可以看到这mat[0,0]一点new_mat[0:2, 0:2].目前mat.reshape(N*Q, N*Q)需要mat[0,0]对new_mat[0:4, 0](这是我不想要的东西).我如何使用reshape或rollaxis或类似的东西来重塑这个数组?我最终想用它绘图imshow,目前卡住了.我觉得很容易做到,我还没想出来.
我有一个大小的numpy数组
arr.size = (200, 600, 20).
Run Code Online (Sandbox Code Playgroud)
我想计算scipy.stats.kendalltau最后两个维度的每个成对组合.例如:
kendalltau(arr[:, 0, 0], arr[:, 1, 0])
kendalltau(arr[:, 0, 0], arr[:, 1, 1])
kendalltau(arr[:, 0, 0], arr[:, 1, 2])
...
kendalltau(arr[:, 0, 0], arr[:, 2, 0])
kendalltau(arr[:, 0, 0], arr[:, 2, 1])
kendalltau(arr[:, 0, 0], arr[:, 2, 2])
...
...
kendalltau(arr[:, 598, 20], arr[:, 599, 20])
Run Code Online (Sandbox Code Playgroud)
这样,我涵盖的所有组合arr[:, i, xi]与arr[:, j, xj]同i < j和xi in [0,20),xj in [0, 20).这是(600 choose 2) * …
我已经在这里寻找了一段时间的答案并且没有找到它,所以希望这不是一个骗局.
我有一个属性文件,主要包含键=值对,但也包含#comments.我需要将它放在字典中,这样我就可以随意获取值.在没有#comments的文件中,以下工作完美.
myprops = dict(line.strip().split('=') for line in open('/Path/filename.properties'))
print myprops['key']
Run Code Online (Sandbox Code Playgroud)
但是当有评论出现时却不是这样.如果#comment存在,字典说
"ValueError: dictionary update sequence element #x has length 1, 2 is required"
Run Code Online (Sandbox Code Playgroud)
我试过用条件包装字典创建
if not line.startswith('#'):
Run Code Online (Sandbox Code Playgroud)
但我似乎无法让它发挥作用.建议?谢谢!
我有以下形式的文件中的数据:
user_id, item_id, rating
1, abc,5
1, abcd,3
2, abc, 3
2, fgh, 5
Run Code Online (Sandbox Code Playgroud)
因此,我想为上述数据形成的矩阵如下:
# itemd_ids
# abc abcd fgh
[[5, 3, 0] # user_id 1
[3, 0, 5]] # user_id 2
Run Code Online (Sandbox Code Playgroud)
丢失数据替换为0.
但是从这里我想创建用户到用户的相似度矩阵和项目到项目的相似性矩阵?
我怎么做?
以下代码产生下图:
import numpy as np
import matplotlib.pyplot as plt
xs = np.random.rand(100)
ys = np.random.rand(100)
r, p = 0.930, 1e-5
label = '$T_m$\n$\\rho = %.3f, p = %.1e$'%(r, p)
fig, ax = plt.subplots()
ax.scatter(xs, ys, label=label)
ax.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

我希望图例文本居中,即'$T_m$'在第一行居中。我尝试过使用str.format迷你语言来处理各种事情,例如
label = '{0:{x}^25}\n{1:.3f}, {2:.1e}'.format('$T_m$', r, p, x=' ')
Run Code Online (Sandbox Code Playgroud)
我认为这会起作用,因为以下给出
>>> print ax.get_legend_handles_labels()
([<matplotlib.collections.PathCollection object at 0x7fa099286590>],
[u' $\\Delta T_{m}$ \n$\\rho=0.930, p=1.2 \\times 10^{-5}$'])
Run Code Online (Sandbox Code Playgroud)
但标签中的空白被删除。我不能使用任何乳胶空格('\;'或'\\mbox{}')作为填充字符,因为它们是多个字符。我还尝试在各个地方使用multialignment='center'关键字,但它不是有效的 kwarg ax.legend。
如何在图例文本中获得居中的多行对齐方式? 最终,我将使用几个图例句柄,其中标签文本可以在第二行中包含更多字符(如此处所示)或在第一行中包含更多字符(与此处所示相反)。
我正在使用 …
关于是否使用2.x或3.x,我已经看过其他几个主题.但是,其中大部分至少有两年的历史,不区分2.6和2.7.
我正在重新启动一个我最终可能要在2013年之前发布的科学项目.我在标准的2.6+模块(如itertools)中使用了numpy,scipy和pylab.哪个版本,2.6或2.7,会更好?
这也将清除在制作脚本时是否使用optparse.
编辑:我在大学工作,我拿起的工作站有Python 2.4.2.6到2.7之间的选择决定了要升级到哪个发行版.感谢您的建议!
我正在尝试拆分列表的元素:
text = ['James Fennimore Cooper\n', 'Peter, Paul, and Mary\n',
'James Gosling\n']
newlist = ['James', 'Fennimore', 'Cooper\n', 'Peter', 'Paul,', 'and', 'Mary\n',
'James', 'Gosling\n']
Run Code Online (Sandbox Code Playgroud)
到目前为止我的代码是:
newlist = []
for item in text:
newlist.extend(item.split())
return newlist
Run Code Online (Sandbox Code Playgroud)
我得到错误:
builtins.AttributeError: 'list' object has no attribute 'split'
我编写了一个脚本来对我们的本地集群进行一些排名顺序相关计算。计算涉及寻找两个阵列,X和Y长度5000-10000的,并提取量
all((X[i], Y[i]))
all((X[i], not Y[i]))
all((not X[i], Y[i]))
Run Code Online (Sandbox Code Playgroud)
数千次计算(因为我洗牌X/Y除其他外)。
我们的一个集群运行的是 python2.4,所以我将alls更改为numpy.alls。然而,我估计需要大约 5-6 小时的计算达到了 24 小时以上。这让我进行了调查。
下面是一些示例代码:
In [2]: import timeit
In [3]: s = """import numpy as np
...: x, y = np.random.rand(1000), np.random.rand(1000)
...: [all((x[i], y[i])) for i in range(1000)]
...: """
In [4]: timeit.timeit(s, number=1000)
Out[4]: 0.39837288856506348
In [5]: s_numpy = """import numpy as np
...: x, y = np.random.rand(1000), np.random.rand(1000)
...: [np.all((x[i], y[i])) for …Run Code Online (Sandbox Code Playgroud) python ×8
numpy ×5
arrays ×1
dictionary ×1
list ×1
loops ×1
matplotlib ×1
matrix ×1
optparse ×1
scipy ×1
split ×1
statistics ×1
string ×1
timeit ×1
version ×1