小编Sau*_*tro的帖子

手动设置图例中点的颜色

我正在制作一个看起来像这样的散点图:

在此输入图像描述

(问题底部的MWE)

从上图中可以看出,图例中点的颜色自动设置为蓝色matplotlib.我需要将这些点设置为颜色图中不存在的其他颜色(即:黑色),这样它们就不会与与所述颜色图相关联的颜色产生混淆.

我环顾四周,但matplotlib.legend模块似乎不接受color关键字.有没有办法做到这一点?


这是MWE:

import matplotlib.pyplot as plt
import numpy as np

def rand_data():
    return np.random.uniform(low=0., high=1., size=(100,))

# Generate data.
x, y, x2, x3 = [rand_data() for i in range(4)]
# This data defines the markes and labels used.
x1 = np.random.random_integers(7, 9, size=(100,))

# Order all lists so smaller points are on top.
order = np.argsort(-np.array(x2))
# Order x and y.
x_o, y_o = np.take(x, order), np.take(y, order)
# Order list …
Run Code Online (Sandbox Code Playgroud)

python numpy colors matplotlib legend

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

使用matplotlib更有效地绘制多边形

我有一个大约60000个形状的日期集(每个角的纬度/经度坐标),我想用matplotlib和底图在地图上绘制.

这就是我现在这样做的方式:

for ii in range(len(data)):
    lons = np.array([data['lon1'][ii],data['lon3'][ii],data['lon4'][ii],data['lon2'][ii]],'f2')
    lats = np.array([data['lat1'][ii],data['lat3'][ii],data['lat4'][ii],data['lat2'][ii]],'f2')
    x,y = m(lons,lats)
    poly = Polygon(zip(x,y),facecolor=colorval[ii],edgecolor='none')
    plt.gca().add_patch(poly)
Run Code Online (Sandbox Code Playgroud)

但是,我的机器需要大约1.5分钟,我在想是否有可能加快速度.有没有更有效的方法来绘制多边形并将它们添加到地图中?

python numpy matplotlib scipy matplotlib-basemap

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

Python,cPickle,pickling lambda函数

我必须像这样挑选一个对象数组:

import cPickle as pickle
from numpy import sin, cos, array
tmp = lambda x: sin(x)+cos(x)
test = array([[tmp,tmp],[tmp,tmp]],dtype=object)
pickle.dump( test, open('test.lambda','w') )
Run Code Online (Sandbox Code Playgroud)

它会出现以下错误:

TypeError: can't pickle function objects
Run Code Online (Sandbox Code Playgroud)

有办法吗?

python arrays lambda numpy pickle

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

如何计算scipy稀疏矩阵行列式而不将其变为密集?

我试图找出在python中找到稀疏对称和实矩阵行列式的最快方法.使用scipy sparse模块,但真的很惊讶没有行列式功能.我知道我可以使用LU分解来计算行列式,但是没有看到一个简单的方法来执行它,因为返回scipy.sparse.linalg.splu是一个对象并且实例化一个密集的L和U矩阵是不值得的 - 我不妨sp.linalg.det(A.todense())在哪里做A我的scipy稀疏矩阵.

我也有点惊讶为什么其他人没有面对scipy中有效决定因素计算的问题.如何使用splu计算行列式?

我看着pySparsescikits.sparse.chlmod.后者对我来说现在不实用 - 需要软件包安装,也不确定在我遇到麻烦之前代码的速度有多快.有解决方案吗 提前致谢.

python numpy linear-algebra scipy sparse-matrix

22
推荐指数
3
解决办法
3499
查看次数

在3D中拟合一条线

是否有任何算法可以从一组3D数据点返回直线方程?我可以找到很多来源,这些来源将给出2D数据集中的线的等式,但没有3D.

谢谢.

python numpy linear-algebra curve-fitting

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

如何计算Numpy的傅立叶级数?

我有周期T的周期函数,想知道如何获得傅立叶系数列表.我尝试从numpy 使用fft模块,但它似乎更专注于傅立叶变换而不是系列.也许它缺乏数学知识,但我看不出如何从fft计算傅里叶系数.

帮助和/或示例表示赞赏.

python numpy fft

20
推荐指数
4
解决办法
4万
查看次数

这是在一行代码中为numpy数组添加额外维度的最佳方法吗?

如果k是任意形状的numpy数组,那么k.shape = (s1, s2, s3, ..., sn),我想重塑它以便k.shape变成(s1, s2, ..., sn, 1),这是在一行中执行它的最佳方法吗?

k.reshape(*(list(k.shape) + [1])
Run Code Online (Sandbox Code Playgroud)

python arrays numpy reshape python-3.x

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

Python对文件进行pickle/unpickle列表

我有一个如下所示的列表:

a = [['a string', [0, 0, 0], [22, 'bee sting']], ['see string', 
    [0, 2, 0], [22, 'd string']]]
Run Code Online (Sandbox Code Playgroud)

并且在保存和检索它时遇到问题.

我可以使用泡菜保存它:

with open('afile','w') as f:
    pickle.dump(a,f)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试加载它时会出现以下错误:

pickle.load('afile')

Traceback (most recent call last):
  File "<pyshell#116>", line 1, in <module>
    pickle.load('afile')
  File "C:\Python27\lib\pickle.py", line 1378, in load
    return Unpickler(file).load()
  File "C:\Python27\lib\pickle.py", line 841, in __init__
    self.readline = file.readline
AttributeError: 'str' object has no attribute 'readline'
Run Code Online (Sandbox Code Playgroud)

我以为我可以转换为numpy数组并使用save,savez或者savetxt.但是我收到以下错误:

>>> np.array([a])

Traceback (most recent call last):
  File "<pyshell#122>", …
Run Code Online (Sandbox Code Playgroud)

python file-io pickle

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

NumPy ndarray的三元运营商?

NumPy有三元运算符吗?例如,在R中有一个矢量化if-else函数:

> ifelse(1:10 < 3,"a","b")
 [1] "a" "a" "b" "b" "b" "b" "b" "b" "b" "b"
Run Code Online (Sandbox Code Playgroud)

NumPy中有什么相同的东西吗?

python arrays numpy multidimensional-array

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

64位窗口上的Python 32位内存限制

我遇到了一个我似乎无法理解的记忆问题.

我在Windows 7 64位机器上运行8GB内存并运行32位python程序.

这些程序读取了5,118个压缩的numpy文件(npz).Windows报告磁盘上的文件占用1.98 GB

每个npz文件包含两个数据:'arr_0'的类型为np.float32,'arr_1'的类型为np.uint8

python脚本读取每个文件将其数据附加到两个列表中,然后关闭该文件.

在文件4284/5118周围,程序抛出一个MemoryException

但是,任务管理器说发生错误时python.exe*32的内存使用量是1,854,848K~ = 1.8GB.远低于我的8 GB限制,或者假定的32位程序的4GB限制.

在程序中我捕获内存错误并报告:每个列表的长度为4285.第一个列表包含总共1,928,588,480个float32的〜= 229.9 MB的数据.第二个列表包含12,342,966,272 uint8的〜= 1,471.3MB数据.

所以,一切似乎都在检查.除了我得到内存错误的部分.我绝对有更多的内存,它崩溃的文件大约是800KB,因此读取一个巨大的文件并没有失败.

此外,该文件未损坏.如果我事先没有耗尽所有的记忆,我可以读得很好.

为了让事情变得更加混乱,所有这一切似乎在我的Linux机器上运行良好(虽然它确实有16GB的内存,而不是我的Windows机器上的8GB),但是,它似乎并不是机器的RAM.造成这个问题.

为什么Python会抛出内存错误,当我预计它应该能够分配另外2GB的数据?

python memory windows file-io numpy

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