我有一个带坐标的三维网格
x = linspace(0, Lx, Nx)
y = linspace(0, Ly, Ny)
z = linspace(0, Lz, Nz)
Run Code Online (Sandbox Code Playgroud)
我需要在一个位置(x0,y0,z0)的某个半径R内索引点(即x [i],y [j],z [k]).N_i可能非常大.我可以做一个简单的循环来找到我需要的东西
points=[]
i0,j0,k0 = floor( (x0,y0,z0)/grid_spacing )
Nr = (i0,j0,k0)/grid_spacing + 2
for i in range(i0-Nr, i0+Nr):
for j in range(j0-Nr, j0+Nr):
for k in range(k0-Nr, k0+Nr):
if norm(array([i,j,k])*grid_spacing - (x0,y0,k0)) < cutoff:
points.append((i,j,k))
Run Code Online (Sandbox Code Playgroud)
但这很慢.是否有一种更自然/更快捷的方式来进行numpy这种类型的操作?
如何使用highcharts rangeselector获得有效的jQuery日期选择器?
这个小提琴是一个老例子(来自高级作者),它有问题.
更改结束日期会将开始日期重置为数据的开头.
$(function() {
$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?', function(data) {
// Create the chart
window.chart = new Highcharts.StockChart({
chart: {
renderTo: 'container'
},
rangeSelector: {
selected: 1,
inputDateFormat: '%Y-%m-%d'
},
title: {
text: 'AAPL Stock Price'
},
series: [{
name: 'AAPL',
data: data,
tooltip: {
valueDecimals: 2
}}]
}, function(chart) {
// apply the date pickers
setTimeout(function() {
$('input.highcharts-range-selector', $('#' + chart.options.chart.renderTo)).datepicker()
}, 0)
});
});
// Set the datepicker's date format
$.datepicker.setDefaults({
dateFormat: 'yy-mm-dd',
onSelect: function(dateText) {
this.onchange();
this.onblur(); …Run Code Online (Sandbox Code Playgroud) V是(n,p)numpy阵列,通常尺寸为n~10,p~20000
我现在的代码看起来像
A = np.zeros(p)
for i in xrange(n):
for j in xrange(i+1):
A += F[i,j] * V[i,:] * V[j,:]
Run Code Online (Sandbox Code Playgroud)
我将如何重写这个以避免双python for循环?
我正在将一些代码从C转换为numpy,这个特定的代码段显示出一些显着的减速.似乎只是用numpy数组中的和来替换内部循环是不够的.有没有人建议恢复一些原始性能?
我宁愿避免使用scipy.weave.我想知道我是否能以某种方式使用卷积函数,但文档有点薄,并且似乎有几个选项(scipy.signal,ndimage,numpy.convolve等).是否可以使用爱因斯坦求和函数(einsum)或tensordot?对于tensordot我认为我需要分别做X,Y,Z?
我已经将这些值设置为随机,因此可以剪切和粘贴,但我应该注意MX,MY和MZ的某些结构M(i,j)是|i-j|和M(i,j)=M(j,i)
一般来说,回应一些建议的编辑 n[0] != n[1] != n[2]
n = np.array((50,50,50))
np.random.seed(1)
A = np.random.random(n)
C = np.zeros_like(A)
MX = np.random.random((n[0],n[0]))
MY = np.random.random((n[1],n[1]))
MZ = np.random.random((n[2],n[2]))
for i in xrange(n[0]):
for j in xrange(n[1]):
for k in xrange(n[2]):
C[i,j,k]=(MX[i,:]*A[:,j,k]).sum() + (MY[j,:]*A[i,:,k]).sum() +(MZ[k,:]*A[i,j,:]).sum()
Run Code Online (Sandbox Code Playgroud) numpy ×3
python ×3
3d ×1
arrays ×1
datepicker ×1
grid ×1
highcharts ×1
hpc ×1
javascript ×1
jquery-ui ×1
subset ×1