小编Gab*_*iel的帖子

通过pyenv将Python构建为UCS-4

我遇到了这个问题ImportError numpy / core / multiarray.so:未定义符号:PyUnicodeUCS2_AsASCIIStringpyenv-virtualenv环境中安装Python 。

就我而言,它发生在matplotlib软件包而不是numpy(如上述问题中),但这基本上是相同的问题。

该问题给出的答案很简单:

针对构建为UCS-4的Python重建NumPy。

我不知道该怎么做。在另一个问题中,有人说必须使用:

./configure --enable-unicode=ucs4
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何与pyenv一起使用该命令。

pyenv回购问题列表中也提到了此问题,并在注释中给出了解决方案。可悲的是(对我而言)我不明白如何应用所说评论中解释的修复程序。

所以我的问题基本上是:如何通过将Python构建为UCS-4 pyenv

python ucs2 ucs pyenv ucs-4

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

pymc3中的多元线性回归

pymc3在专门使用了多年之后,我最近开始学习emcee,并且遇到了一些概念问题。

我正在练习霍格的《将模型拟合到数据》的第 7 章。这涉及到具有任意二维不确定性的直线的 mcmc 拟合。我在 中很容易地完成了这一点emcee,但pymc给我带来了一些问题。

它本质上归结为使用多元高斯似然。

这是我到目前为止所拥有的。

from pymc3 import  *

import numpy as np
import matplotlib.pyplot as plt

size = 200
true_intercept = 1
true_slope = 2

true_x = np.linspace(0, 1, size)
# y = a + b*x
true_regression_line = true_intercept + true_slope * true_x
# add noise

# here the errors are all the same but the real world they are usually not!
std_y, std_x = 0.1, …
Run Code Online (Sandbox Code Playgroud)

python statistics mcmc pymc3 emcee

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

Python酸洗错误:TypeError:对象pickle不返回列表

我知道这个非常古老的问题Python酸洗错误:TypeError:对象pickle没有返回列表.问题与numpy?但唯一给出的答案是相当模糊的.

这是在Python 3.6中重现该问题的代码.

import pickle
from astroquery.irsa import Irsa
from astropy import units as u

# Query region.
table = Irsa.query_region("m31", catalog="fp_psc", spatial="Cone",
                          radius=.5 * u.arcmin)

# Dump table.
with open('table.pkl', 'wb') as f:
    pickle.dump(table, f)

# This is where the issue appears.
with open('table.pkl', 'rb') as f:
    table = pickle.load(f)
Run Code Online (Sandbox Code Playgroud)

尝试加载pickle数据时,它失败了:

Traceback (most recent call last):
  File "/home/gabriel/Descargas/test.py", line 17, in <module>
    table2 = pickle.load(f)
  File "/home/gabriel/anaconda3/envs/cat-match/lib/python3.6/site-packages/astropy/table/column.py", line 238, in __setstate__
    super_class.__setstate__(self, state)
  File "/home/gabriel/anaconda3/envs/cat-match/lib/python3.6/site-packages/numpy/ma/core.py", line 5869, …
Run Code Online (Sandbox Code Playgroud)

python pickle astropy astroquery

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

matplotlib错误:UserWarning:找不到rc文件

我有以下非常简单的代码:

import matplotlib.pyplot as plt 
import numpy as np
import matplotlib.gridspec as gridspec

x = np.random.randn(60) 
y = np.random.randn(60)
z = [np.random.random() for _ in range(60)]

fig = plt.figure()
gs = gridspec.GridSpec(1, 2)

ax0 = plt.subplot(gs[0, 0])
plt.scatter(x, y, s=20)

ax1 = plt.subplot(gs[0, 1])
cm = plt.cm.get_cmap('RdYlBu_r')
plt.scatter(x, y, s=20 ,c=z, cmap=cm, vmin=0, vmax=1)
cbaxes = fig.add_axes([0.6, 0.12, 0.1, 0.02]) 
plt.colorbar(cax=cbaxes, ticks=[0.,1], orientation='horizontal')

fig.tight_layout()

out_png = '/home/user/image_out.png'
plt.savefig(out_png, dpi=150)
plt.close()
Run Code Online (Sandbox Code Playgroud)

如果我在我的机器上运行它,它会起作用,除了警告:

/usr/local/lib/python2.7/dist-packages/matplotlib/figure.py:1533: UserWarning: This figure includes Axes that are not …
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-2.7

0
推荐指数
1
解决办法
3079
查看次数

遍历列表中的元素以指定不同的颜色以进行绘图

我有一个由N子列表组成的主列表(其中这个数字将针对不同的运行而改变),每个列表包含成对的x,y点.我需要一种方法来绘制这些子列表中具有不同颜色的点,从列表中获取(通常)比子列表更少的元素.要做到这一点,我需要一种循环这个颜色列表的方法.这是我所追求的内容的摘录:

# Main list which holds all my N sub-lists.
list_a = [[x,y pairs], [..], [..], [..], ..., [..]]

# Plot sub-lists with colors taken from this list. I need the for block below
# to cycle through this list.
col = ['red', 'darkgreen', 'blue', 'maroon','red']

for i, sub_list in enumerate(list_a):
    plt.scatter(sub_list[0], sub_list[1], marker='o', c=col[i])
Run Code Online (Sandbox Code Playgroud)

如果len(col) < len(list_a)(大部分时间都会发生),这将返回错误.因为对于给定的代码运行,子列表的数量会有所不同,我不能将多种颜色硬编码到col列表中,所以我需要一种循环遍历该颜色列表的方法.我怎么能这样做?

python list matplotlib

0
推荐指数
1
解决办法
953
查看次数

列表中所有子列表的长度乘以

我有一个由任意数量的子列表组成的列表(意味着它不是固定的,可以在代码的不同运行中更改)我需要乘以所有子列表的长度并获得最终的数字.

这是一个MWE:

a = [[1.2,5.8,6,3], [1,48,5], [2.,3], [4,7,5.,2,5,3,6,554,6.,6,9], [6,.3,8,45.2,.001]]
n = 1
for sub_lst in a:
    n *= len(sub_lst)
print n
Run Code Online (Sandbox Code Playgroud)

这导致1320列表具有4个,3个,2个,11个和5个元素.

是否可以在不诉诸for循环的情况下做到这一点?numpy答案很受欢迎.

python numpy

0
推荐指数
1
解决办法
95
查看次数

Python:打破for循环调用函数

我需要for根据调用函数后得到的结果打破循环.这是我所追求的一个例子(显然不起作用):

def break_out(i):
    # Some condition
    if i > 10:
        # This does not work.
        return break

for i in range(1000):
    # Call function
    break_out(i)
Run Code Online (Sandbox Code Playgroud)

当然这很简单 MWE,我的实际功能要大得多,这就是为什么我把它移到for循环之外.

这个答案说这是不可能的,我应该让函数返回一个布尔值并iffor循环内添加一个语句来决定.

因为它是一个相当古老的问题,并没有得到太多的关注(同样,它适用于while循环),我想重新检查这样的事情是否可行.

python

0
推荐指数
1
解决办法
1100
查看次数

使用Python为多个列表压缩未知数量的列表

我需要做一些非常类似于这里问的内容你如何在Python中压缩未知数量的列表?,但在更一般的情况下.

我有以下设置:

a = [['a', '0', 'b', 'f', '78']]
b = [['3', 'w', 'hh', '12', '8']]
c = [['g', '7', '1', 'a0', '9'], ['45', '4', 'fe', 'h', 'k']]
Run Code Online (Sandbox Code Playgroud)

我需要将这些列表压缩在一起以获得:

abc =  [['a', '3', 'g', '45'], ['0', 'w', '7', '4'], ['b', 'hh', '1', 'fe'], ['f', '12', 'a0', 'h'], ['78', '8', '9', 'k']]
Run Code Online (Sandbox Code Playgroud)

我可以生成:

zip(a[0], b[0], c[0], c[1])
Run Code Online (Sandbox Code Playgroud)

但是这些列表a,b,c包含许多子列表,这些子列表对于连续运行会有所不同,因此这种扩展它们的"手动"方式将不起作用.

我能得到的最接近的是:

zip(a[0], b[0], *c)
Run Code Online (Sandbox Code Playgroud)

由于*不允许使用除最后一个位置之外的任何其他位置解压缩列表,因此"理想"表达式:

zip(*a, *b, *c)
Run Code Online (Sandbox Code Playgroud)

不起作用.

我怎样才能将一些列表与未知数量的子列表压缩在一起?

python zip list

0
推荐指数
1
解决办法
554
查看次数

检查列表或数组元素是否为空

我知道如何检查列表是否为空(检查列表是否为空的最佳方法)以及如何检查numpy数组是否为空(如何检查 numpy 数组是否为空?

我有一个元素,有时可以是列表,有时可以是数组。我需要检查这个元素是否为空,而不事先知道它是哪一个。我可以考虑做

if isinstance(a, list):
    if a:
        # do something
elif a.any():
    # do something
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种更Pythonic的方式来做到这一点?

python arrays numpy list

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

标签 统计

python ×9

list ×3

matplotlib ×2

numpy ×2

arrays ×1

astropy ×1

astroquery ×1

emcee ×1

mcmc ×1

pickle ×1

pyenv ×1

pymc3 ×1

python-2.7 ×1

statistics ×1

ucs ×1

ucs-4 ×1

ucs2 ×1

zip ×1