小编use*_*528的帖子

在numpy中索引3d网格数据的球形子集

我有一个带坐标的三维网格

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这种类型的操作?

python 3d grid numpy subset

5
推荐指数
1
解决办法
1251
查看次数

带有Highstocks/Highcharts的jQuery datepicker

如何使用highcharts rangeselector获得有效的jQuery日期选择器?

这个小提琴是一个老例子(来自高级作者),它有问题.

http://jsfiddle.net/BWEm5/

更改结束日期会将开始日期重置为数据的开头.

$(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)

javascript jquery-ui datepicker highcharts

5
推荐指数
1
解决办法
4096
查看次数

numpy矢量化的双python for循环

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循环?

python numpy linear-algebra

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

numpy中的三张量产品

我正在将一些代码从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)

python arrays hpc numpy

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