我正在寻找一种有效的方法来有效地将图像分成小区域,分别处理每个区域,然后将每个过程的结果重新组合成单个处理过的图像.Matlab有一个名为blkproc的工具(blockproc在较新版本的Matlab中取代).
在理想世界中,函数或类也支持输入矩阵中的分区之间的重叠.在Matlab帮助中,blkproc定义为:
B = blkproc(A,[mn],[mborder nborder],有趣,...)
我已经采取了一种方法,但它让我觉得笨拙,我敢打赌,这是一个更好的方法.冒着我自己的尴尬,这是我的代码:
import numpy as np
def segmented_process(M, blk_size=(16,16), overlap=(0,0), fun=None):
rows = []
for i in range(0, M.shape[0], blk_size[0]):
cols = []
for j in range(0, M.shape[1], blk_size[1]):
cols.append(fun(M[i:i+blk_size[0], j:j+blk_size[1]]))
rows.append(np.concatenate(cols, axis=1))
return np.concatenate(rows, axis=0)
R = np.random.rand(128,128)
passthrough = lambda(x):x
Rprime = segmented_process(R, blk_size=(16,16),
overlap=(0,0),
fun=passthrough)
np.all(R==Rprime)
Run Code Online (Sandbox Code Playgroud) 几个用户询问在numpy的或SciPy的图像卷积的速度或存储器消耗[ 1,2,3,4 ].从回答和我使用Numpy的经验来看,我相信与Matlab或IDL相比,这可能是numpy的一个主要缺点.
到目前为止,答案都没有解决整个问题,所以这里是:"在Python中计算2D卷积的最快方法是什么?" 常见的python模块是公平游戏:numpy,scipy和PIL(其他?).为了进行具有挑战性的比较,我想提出以下规则:
我有大约40个具有相同模式的数据库.我能做些什么来确保这些数据库顺利运行?
我应该定期优化表格吗?如何检测表崩溃?
我希望找到类似于Borland Delphi或VisualBasic for Python的工具.基本上,我希望能够轻松编写Windows应用程序,而无需对每个小部件进行编码.这样的软件存在吗?谢谢!
我想打印一个轴标签:"温度(℃)".我该怎么做?一个片段是这样的:
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
x = range(10,60,1)
y = range(-100, 0, 2)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y)
ax.set_xlabel('Temperature (?)')
Run Code Online (Sandbox Code Playgroud)
对于最后一行,我尝试过:
ax.set_xlabel('Temperature (?)'.encode('utf-8'))
ax.set_xlabel(u'Temperature (u\2103)')
ax.set_xlabel(u'Temperature (?)')
ax.set_xlabel(u'Temperature (\u2103)')
ax.set_xlabel('Temperature (\u2103)')
Run Code Online (Sandbox Code Playgroud)
我只是不明白.我正在使用spyder并从那里运行代码.
我成功安装了所有东西,或者我认为:
但是当我尝试:
import MySQLdb
Run Code Online (Sandbox Code Playgroud)
我明白了:
ImportError:
dlopen(/Users/aj/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-ix86_64.egg-tmp/_mysql.so, 2):
no suitable image found.
Did find:
/Users/aj/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-ix86_64.egg-tmp/_mysql.so: mach-o,
but wrong architecture
Run Code Online (Sandbox Code Playgroud)
我还能错过什么?
我的系统当然也是64位版本,uname -a给出:
Darwin ajmacbook.local 11.1.0 Darwin Kernel Version 11.1.0: Tue Jul 26 16:07:11 PDT 2011; root:xnu-1699.22.81~1/RELEASE_X86_64 x86_64
Run Code Online (Sandbox Code Playgroud)
我想我已经阅读了大部分关于这个主题的SO答案和谷歌搜索结果,想不出其他任何想法.任何建议将不胜感激.
我试图将具有相关纬度和经度的不规则网格化数据集(原始卫星数据)映射到由给定的经常网格化的纬度和经度集basemap.makegrid().我使用matplotlib.mlab.griddata与mpl_toolkits.natgrid安装.下面是whosipython中用作输出的变量列表以及变量的一些统计信息:
Variable Type Data/Info
-------------------------------
datalat ndarray 666x1081: 719946 elems, type `float32`, 2879784 bytes (2 Mb)
datalon ndarray 666x1081: 719946 elems, type `float32`, 2879784 bytes (2 Mb)
gridlat ndarray 1200x1000: 1200000 elems, type `float64`, 9600000 bytes (9 Mb)
gridlon ndarray 1200x1000: 1200000 elems, type `float64`, 9600000 bytes (9 Mb)
var ndarray 666x1081: 719946 elems, type `float32`, 2879784 bytes (2 Mb)
In [11]: var.min()
Out[11]: -30.0
In [12]: var.max()
Out[12]: 30.0
In [13]: …Run Code Online (Sandbox Code Playgroud) 我使用64位版本的Enthought Python来处理多个HDF5文件中的数据.我在64位Windows上使用h5py版本1.3.1(HDF5 1.8.4).
我有一个对象为我的特定数据层次提供了方便的接口,但是测试h5py.File(fname,'r')会产生相同的结果.我正在遍历一个长列表(一次约100个文件)并尝试从文件中提取特定的信息.我遇到的问题是我从几个文件中获取相同的信息!我的循环看起来像:
files = glob(r'path\*.h5')
out_csv = csv.writer(open('output_file.csv', 'rb'))
for filename in files:
handle = hdf5.File(filename, 'r')
data = extract_data_from_handle(handle)
for row in data:
out_csv.writerow((filename, ) +row)
Run Code Online (Sandbox Code Playgroud)
当我使用hdfview之类的东西检查文件时,我知道内部结构是不同的.但是,我得到的csv似乎表明所有文件都包含相同的数据.以前有人见过这种行为吗?我有什么建议可以开始调试这个问题吗?
我有以下问题:
我在matplotlib.pyplot中使用hist()
我试图在同一个图上创建4个直方图.并且每个都有一个近似高斯分布.
如何在同一图表上绘制4个直方图,而不会相互阻塞(并排)?有任何想法吗?
我试过
echo "print 'hello'" | ipython
Run Code Online (Sandbox Code Playgroud)
它运行命令,但 ipython 之后立即退出。
有任何想法吗?谢谢!
编辑: 我实际上需要将命令传递到交互式 Django shell,例如:
echo "print 'hello'" | python manage.py shell
Run Code Online (Sandbox Code Playgroud)
所以建议的 -i 开关 gimel 似乎不起作用(shell 在执行后仍然退出)
我想在Cesium的珠穆朗玛峰上面点一点.我昨晚最有可能的候选人是我借用来进行eodef转换的代码(来自PySatel.coord).今天上午审查后,似乎是正确的:
a = 6378.137
b = 6356.7523142
esq = 6.69437999014 * 0.001
e1sq = 6.73949674228 * 0.001
f = 1 / 298.257223563
def geodetic2ecef(lat, lon, alt):
"""Convert geodetic coordinates to ECEF.
Units are degrees and kilometers.
"""
lat, lon = radians(lat), radians(lon)
xi = sqrt(1 - esq * sin(lat))
x = (a / xi + alt) * cos(lat) * cos(lon)
y = (a / xi + alt) * cos(lat) * sin(lon)
z = (a / xi * (1 …Run Code Online (Sandbox Code Playgroud)