是否有更有效的方法在预先指定的箱中取平均数组?例如,我有一个数字数组和一个对应于该数组中bin开始和结束位置的数组,我想在这些数据库中取平均值?我有下面的代码,但我想知道如何减少和改进它.谢谢.
from scipy import *
from numpy import *
def get_bin_mean(a, b_start, b_end):
ind_upper = nonzero(a >= b_start)[0]
a_upper = a[ind_upper]
a_range = a_upper[nonzero(a_upper < b_end)[0]]
mean_val = mean(a_range)
return mean_val
data = rand(100)
bins = linspace(0, 1, 10)
binned_data = []
n = 0
for n in range(0, len(bins)-1):
b_start = bins[n]
b_end = bins[n+1]
binned_data.append(get_bin_mean(data, b_start, b_end))
print binned_data
Run Code Online (Sandbox Code Playgroud) 去年,我在一所大学的物理研究小组实习.在这一组中,我们主要使用LabVIEW编写程序来控制我们的设置,进行数据采集和分析数据.对于前两个目的,这非常正常,但对于数据分析,这是一个真正的痛苦.最重要的是,每个人都大多是自学成才,因此编写的代码通常非常混乱(难怪每个博士都迅速决定从头开始重写所有内容).由于IT部门严格的软件和网络规定,版本控制未知,无法设置.
现在,实际上事情确实令人惊讶,但是自然科学中的人们如何进行软件开发呢?
一些具体问题:
到目前为止的答案(或我对它们的解释):( 2008-10-11)
我很好奇F#性能与C++性能的对比情况如何?我问了一个关于Java的类似问题,我得到的印象是Java不适合重编码.
我已经读过F#应该具有更高的可扩展性和更高的性能,但这种真实性能与C++相比如何呢?关于当前实施的具体问题是:
谢谢
我在这里遇到了一个问题(我的RAM):它无法保存我想要绘制的数据.我确实有足够的高清空间.是否有任何解决方案可以避免我的数据集"阴影"?
具体而言,我处理数字信号处理,我必须使用高采样率.我的框架(GNU Radio)以二进制形式保存值(以避免使用太多的磁盘空间).我打开包装.之后我需要策划.我需要可缩放的图和交互式.这是一个问题.
是否有任何优化潜力,或其他软件/编程语言(如R左右)可以处理更大的数据集?实际上我想在我的情节中获得更多数据.但我没有其他软件的经验.GNUplot失败,采用与以下类似的方法.我不知道R(喷射).
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import struct
"""
plots a cfile
cfile - IEEE single-precision (4-byte) floats, IQ pairs, binary
txt - index,in-phase,quadrature in plaintext
note: directly plotting with numpy results into shadowed functions
"""
# unpacking the cfile dataset
def unpack_set(input_filename, output_filename):
index = 0 # index of the samples
output_filename = open(output_filename, 'wb')
with open(input_filename, "rb") as f:
byte = f.read(4) # read 1. column of the vector
while byte != …Run Code Online (Sandbox Code Playgroud) 在一些科学环境中,你经常离不开FORTRAN,因为大多数开发人员只知道这个习语,并且有很多遗留代码和相关经验.坦率地说,高性能编程没有很多其他跨平台选项(C++可以完成任务,但语法,零启动数组和指针与某些人不兼容).
所以,让我们假设一个新项目,必须使用Fortran 90的,但我想建立最先进的软件架构出来的,同时与最新的编译器兼容(英特尔ifort,而且还包括Sun/HP/IBM编译)
所以我想要强加一些众所周知的常识,但在我的环境中还不是标准:
implicit none等#ifdef DEBUG),带有更多检查和所有可能的英特尔编译器检查(数组边界,子程序接口等)所有这一切的目标是拥有值得信赖,可维护和模块化的代码.然而,在许多遗留代码中,可重用性不是一个重要的目标.
我四处搜寻有关面向对象的Fortran编程契约式引用(断言/前提条件的/ etc.),发现只有丑陋的和过时的文件,通过人与没有大规模参与项目进行语法和文章,和死了的项目.
有关此主题的任何好的URL,建议,参考文件/书籍?
C#似乎显示了科学计算的一些希望,但我发现很少关于绘制二维图形,这对科学学生和科学家来说都非常重要.
有没有一种可靠,免费的方法来用C#创建出版质量的2D图?并且能够保存为多种格式(png,eps,...).类似于Python的matplotlib?
我正努力成为一名科学程序员.我有足够的数学和统计学背景,但缺乏编程背景.我发现学习如何使用语言进行科学编程非常困难,因为SP的大部分参考都是微不足道的.
我的工作涉及统计/财务建模,没有物理模型.目前,我广泛使用Python与numpy和scipy.完成R/Mathematica.我知道足够的C/C++来读取代码.没有Fortran的经验.
我不知道这对于科学程序员来说是否是一个很好的语言列表.如果是这样,那么在科学环境中学习这些语言的语法和设计模式的阅读清单是什么.
我试图在Python中实现大量的矩阵 - 矩阵乘法.最初,我假设NumPy将自动使用我的线程BLAS库,因为我是针对这些库构建的.但是,当我查看顶部或其他内容时,似乎代码根本不使用线程.
任何想法是什么错误或我可以做些什么来轻松使用BLAS性能?
如何根据pandas数据框中的数据计算主成分分析?