我正在处理通过numpy.array()创建的数组,我需要在模拟图像的画布上绘制点.由于在包含有意义数据的数组中心部分周围有很多零值,我想"修剪"数组,删除仅包含零的行和仅包含零的行.
所以,我想知道一些本地numpy函数甚至是一个代码片段来"修剪"或找到一个"边界框"来仅切片数组中包含数据的部分.
(因为这是一个概念性的问题,我没有提出任何代码,对不起,如果我应该,我很新鲜在SO上发帖.)
谢谢阅读
乡亲
我从一位同事那里听说,作为使用Microsoft Expression Blend的设计师,我应该避免使用过多的面板元素嵌套,因为它们的计算成本很高.
例如,我倾向于使用带有网格的标题和自定义状态栏创建主窗口,然后使用顶部面板并在其中放置网格,如果我在已经网格化的顶部面板上的矩形内部有消息,则创建另一个网格等
作为一个非常面向布局的设计师(无论屏幕尺寸如何,他都希望最有效地使用每个屏幕)我知道这是考虑绝对控制和灵活性的最佳方式,这会阻止窗口以"不可预测的"方式调整大小; oP处
可是......这个朋友我的说,如果你有,比如说,嵌套在一个另外五个网格,如果你通过鼠标对他们,你生成五个鼠标事件,这是昂贵的.
此外,如果由于在实际渲染之前太多容器要求子尺寸而进行太多计算,则也可能成本高昂.
我之前有过使用PyGtk的经验,我必须说我的所有脚本都使用了A LOT o布局面板,甚至调整窗口的大小在我看来也不会特别昂贵,除非我需要一些复杂的画布绘图.重新计算.
有没有人有任何经验或知道任何事情?
非常感谢阅读
我注意到,在Google地图页面中,您可以获得一个"嵌入"链接以放入iframe并在浏览器中加载地图.(这里没有新闻)
图像大小可以调整到非常大,所以我有兴趣将单个大图像作为单个.PNGs.
更具体地说,我想从边界框(右上角和左下角坐标)定义一个矩形区域,并获得具有适当缩放系数的相应图像.
但我的问题是:如何使用Python将此地图的"像素内容"作为图像对象?
(我的理由是:如果浏览器可以获取并呈现这样的图像内容,那么Python也应该能够做到这一点).
编辑:这是显示我的示例地图的HTML文件的内容:
<iframe
width="2000"
height="1500"
frameborder="0"
scrolling="yes"
marginheight="0"
marginwidth="0"
src="http://maps.google.com.br/maps?hl=pt-BR&ll=-30.027489,-51.229248&spn=1.783415,2.745209&z=10&output=embed"/>
Run Code Online (Sandbox Code Playgroud)
编辑:我按照Ned Batchelder的建议做了,并urllib.urlopen()使用src上面iframe 的地址读取了一个电话的内容.结果是很多javascript代码,我认为这与Google Maps JavaScript API有关.所以,问题依然存在:为了获得地图图像,我怎样才能从Python中的所有这些东西中做一些有用的东西?
编辑:此链接似乎包含一些关于Google地图如何拼贴地图的非常相关的信息:http: //www.codeproject.com/KB/scrapbook/googlemap.aspx
对于对此主题感兴趣的人:接受的答案涉及一些我认为在这里有详细描述的概念.也就是说,之间的差异
data,newtype以及instance关键字,并使用它们的方式.
我开始像一周前学习Haskell(来自Python和C#),我想实现一个GeographicPosition存储Latitude,Longitude和Elevation的类.
具体来说,我想用最优雅,功能性的"测量单位"识别方式来实现.
例如,如果我们在笛卡尔("矩形")空间中采用X,Y和Z,它们都意味着相同的东西,具有相同的范围(从-inf到+inf),正交和均匀.
现在有纬度,经度和海拔,这不是那样的.例如,经度是周期性的,纬度在极点处具有一些最大范围(它们本身是奇点),并且高度在地球中心具有最小绝对值(另一个奇点).
除了奇点之外,很明显(至少对我来说)它们不是"同一个东西",因为X,Y和Z在笛卡尔系统中是"相同的东西".我不能简单地翻转原点并假装Latitude现在是经度,我可以假装X现在是Y,等等.
所以问题是:
Latitude,Longitude和Elevation在Haskell中代表地理位置的类型中是否有自己的数字类型?什么是一个好的类型签名(最小的示例代码将是伟大的)
我会想象一下
data Position = Position { latitude :: Latitude,
longitude :: Longitude,
elevation :: Elevation }
Run Code Online (Sandbox Code Playgroud)
而不是更明显的,基于位置的
data Position = Position RealFloat RealFloat RealFloat
Run Code Online (Sandbox Code Playgroud)
但我不知道哪种风格更值得推荐.它似乎Bounded也是一个有趣的结构,但我不太明白如何在这种情况下使用它.
我知道有一些关于文件读取,二进制数据处理和使用struct之前的整数转换的问题,所以我来这里询问一些我认为花费太多时间运行的代码.正在读取的文件是多通道数据采样记录(短整数),具有插入的数据间隔(因此是嵌套for语句).代码如下:
# channel_content is a dictionary, channel_content[channel]['nsamples'] is a string
for rec in xrange(number_of_intervals)):
for channel in channel_names:
channel_content[channel]['recording'].extend(
[struct.unpack( "h", f.read(2))[0]
for iteration in xrange(int(channel_content[channel]['nsamples']))])
Run Code Online (Sandbox Code Playgroud)
有了这段代码,我得到每兆字节读取2.2秒,带有2Mb RAM的双核,而我的文件通常有20+ Mb,这会产生一些非常恼人的延迟(特别考虑到另一个基准共享软件程序我试图镜像加载文件快点吧.
我想知道的是:
谢谢阅读
(我已经发布了一些关于我的这个职位的问题,我希望它们在概念上都是无关的,我也希望不要过于重复.)
编辑: channel_names是一个列表,所以我做了@eumiro建议的修正(删除错误的括号)
编辑:我目前使用的塞巴斯蒂安的建议去array与fromfile()方法,并将很快把这里的最终代码.此外,每一个结果对我都非常有用,我非常高兴地感谢所有善意回答的人.
进入array.fromfile()一次之后的最终形式,然后通过切割大数组交替地为每个通道扩展一个数组:
fullsamples = array('h')
fullsamples.fromfile(f, os.path.getsize(f.filename)/fullsamples.itemsize - f.tell())
position = 0
for rec in xrange(int(self.header['nrecs'])):
for channel in self.channel_labels:
samples = int(self.channel_content[channel]['nsamples'])
self.channel_content[channel]['recording'].extend(
fullsamples[position:position+samples])
position += samples
Run Code Online (Sandbox Code Playgroud)
与一次读取文件或以任何形式使用文件相比,速度提升非常 …
我目前正在使用Newtonsoft将一些xml转换为json以从RestExtension返回.
我的xml是以.的形式
<Items>
<Item>
<Name>name</Name>
<Detail>detail</Detail>
</Item>
<Item>
<Name>name</Name>
<Detail>detail</Detail>
</Item>
</Items>
Run Code Online (Sandbox Code Playgroud)
我把它转换为json使用
JsonConvert.SerializeXmlNode(xmldocument);
Run Code Online (Sandbox Code Playgroud)
如果有多个项目,这可以正常工作.
我得到了这个 - json中的一系列项目(这是我需要的):
{"Items":{"Item":[{"Name":"name","Detail":"detail"},{"Name":"name","Detail":"detail"}]}}
Run Code Online (Sandbox Code Playgroud)
但是当只有一个时,可以理解的是这样转换(不是数组):
{"Items":{"Item":{"Name":"name","Detail":"detail"}}}
Run Code Online (Sandbox Code Playgroud)
我正在阅读此内容的应用程序开发人员需要json返回一个项目数组,无论是否有一个或多个.
有没有办法欺骗它认为它是一个数组或者有人建议另一种方式这样做?
我有一个脚本,它使用Google Maps API下载一系列相同大小的方形卫星图像并生成PDF.图像需要事先旋转,我已经使用PIL进行了旋转.
我注意到,由于不同的光线和地形条件,一些图像太亮,另一些图像太暗,结果pdf结果有点难看,"在野外"读取条件不太理想(这是偏远的山地自行车,我想要一个特定十字路口的打印缩略图).
(编辑)然后目标是使所有图像最终具有相似的表观亮度和对比度.因此,过于明亮的图像必须变暗,而黑暗的图像则必须变亮.(顺便说一下,我曾经使用过imagemagick autocontrast,或者auto-gamma,或者equalize,或autolevel类似的东西,在医学图像中有趣的结果,但不知道如何在PIL中做任何这些).
转换为灰度后我已经使用了一些图像校正(前一段时间有灰度打印机),但结果也不好.这是我的灰度代码:
#!/usr/bin/python
def myEqualize(im)
im=im.convert('L')
contr = ImageEnhance.Contrast(im)
im = contr.enhance(0.3)
bright = ImageEnhance.Brightness(im)
im = bright.enhance(2)
#im.show()
return im
Run Code Online (Sandbox Code Playgroud)
此代码对每个图像独立工作.我想知道首先分析所有图像然后"标准化"它们的视觉特性(对比度,亮度,伽玛等)会更好.
另外,我认为有必要在图像中进行一些分析(直方图?),以便根据每个图像应用自定义校正,而不是对所有图像进行相等的校正(尽管任何"增强"函数都隐含地考虑初始合同).
有没有人有这样的问题和/或知道用彩色图像(没有灰度)做这个的好方法?
任何帮助将不胜感激,感谢阅读!
python image-processing brightness contrast python-imaging-library
我有一个恒定的数据结构,代表每个人类椎骨的相对高度,相对于总脊柱高度标准化.这来自人体测量学等.
我已经在Python中实现了它作为元组的元组,每个元组包含一个(字符串)Name和(double)Value,如下所示:
vertebral_heights = (
("C7", 0.0000000),
("T1", 0.0391914),
("T2", 0.0785479),
("T3", 0.1183993),
("T4", 0.1590759),
("T5", 0.2009076),
("T6", 0.2442244),
("T7", 0.2893564),
("T8", 0.3366337),
("T9", 0.3863861),
("T10", 0.4389439),
("T11", 0.4946370),
("T12", 0.5537954),
("L1", 0.6167492),
("L2", 0.6838284),
("L3", 0.7553630),
("L4", 0.8316832),
("L5", 0.9131188),
("S1", 1.0000000))
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是创建一个Dictionary,但是需要一个类作为容器.然后想到了一个Enum的想法,但我读过"enums for ints",而且我有双打.然后是Class和Struct,但到目前为止我完全感到困惑,我相信我目前对用C#做这些东西的最佳实践的理解还不够.
我的用途是在应用程序模型(元素的数字部分)和用户模型(元素的命名,域相关部分)之间建立"映射".
有什么建议吗?
我有一个肌电数据的信号,我认为(科学论文的明确推荐),以平滑使用RMS.
我有以下工作代码,产生所需的输出,但它比我想象的要慢.
#!/usr/bin/python
import numpy
def rms(interval, halfwindow):
""" performs the moving-window smoothing of a signal using RMS """
n = len(interval)
rms_signal = numpy.zeros(n)
for i in range(n):
small_index = max(0, i - halfwindow) # intended to avoid boundary effect
big_index = min(n, i + halfwindow) # intended to avoid boundary effect
window_samples = interval[small_index:big_index]
# here is the RMS of the window, being attributed to rms_signal 'i'th sample:
rms_signal[i] = sqrt(sum([s**2 for s in window_samples])/len(window_samples))
return rms_signal
Run Code Online (Sandbox Code Playgroud)
我已经看到了关于移动窗口循环优化的一些 …
作为练习,我决定在WPF中创建一个自行车齿轮计算器.我创建了两个私有字段,其中包含触发器OnPropertyChanged(),但我有一个数据绑定属性ratio,其行为为"只读",因为它是动态计算的.当我运行程序时,文本框显示,初始值正确显示,属性更改处理程序中的"工作"单词显示,但ratioTextBlock不更新.
我怀疑这是由于属性被"哄骗"的方式,我想知道是否绝对有必要为每个人添加一个私有字段,我想知道是否应该有任何DependencyProperty ...但实际上我已经到达了知识限制,并不能使这个琐碎的程序工作.
这是我的模特:
class SingleGearsetModel : INotifyPropertyChanged
{
public SingleGearsetModel()
{
crank = 44;
cog = 16;
}
private int _crank;
private int _cog;
public int crank {
get{return _crank;}
set{
_crank = value;
OnPropertyChanged("crank");
}
}
public int cog {
get{return _cog;}
set{
_cog = value;
OnPropertyChanged("cog");
}
}
public double ratio
{
get {
return (double)crank / (double)cog;
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string arg)
{
PropertyChangedEventHandler handler …Run Code Online (Sandbox Code Playgroud)