相关疑难解决方法(0)

使用numpy构建两个数组的所有组合的数组

我试图在6参数函数的参数空间上运行以研究它的数值行为,然后再尝试做任何复杂的事情,所以我正在寻找一种有效的方法来做到这一点.

给定6-dim numpy数组作为输入,我的函数采用浮点值.我最初尝试做的是:

首先,我创建了一个函数,它接受2个数组并生成一个数组,其中包含来自两个数组的所有值组合

from numpy import *
def comb(a,b):
    c = []
    for i in a:
        for j in b:
            c.append(r_[i,j])
    return c
Run Code Online (Sandbox Code Playgroud)

然后我习惯reduce()将它应用于相同数组的m个副本:

def combs(a,m):
    return reduce(comb,[a]*m)
Run Code Online (Sandbox Code Playgroud)

然后我评估我的功能如下:

values = combs(np.arange(0,1,0.1),6)
for val in values:
    print F(val)
Run Code Online (Sandbox Code Playgroud)

这有效,但它太慢了.我知道参数的空间很大,但这不应该太慢.在这个例子中我只抽取了10 6(一百万)个点,并且创建数组花了超过15秒values.

你知道用numpy做这个更有效的方法吗?

F如果有必要,我可以修改函数获取它的参数的方式.

python arrays numpy multidimensional-array

132
推荐指数
9
解决办法
10万
查看次数

numpy rollaxis - 它究竟是如何工作的?

所以我正在尝试numpy,我在rollaxis方法中遇到了一个奇怪的(?)行为.

In [81]: a = np.ones((4, 3, 2))

In [82]: a.shape
Out[82]: (4, 3, 2)

In [83]: x = np.rollaxis(a, 2)

In [84]: x.shape
Out[84]: (2, 4, 3)

In [85]: np.rollaxis(x, -2).shape
Out[85]: (4, 2, 3)
Run Code Online (Sandbox Code Playgroud)

-2不应该反转rolrolis?我要做的是应用一个只能在2坐标第一时应用的矩阵.但后来我想把我的阵列恢复原状.我发现工作的唯一的事情是申请np.rollaxis(x, 2)两次,或申请np.rollaxis(x, 0, start=3).我只是通过猜测发现了这些,我不知道它们为什么会起作用.他们似乎也模糊了我真正想做的事情.有人可以解释一下我应该"扭转"滚动的方式,或者我做错了什么?

(有这样的pythonic方法吗?)

python numpy

10
推荐指数
2
解决办法
9023
查看次数

在两个图像之间插值

我正在尝试在 Python 中的两个图像之间进行插值。

图像具有形状 (188, 188)

图片_1 图片_2

我希望在这两个图像之间插入图像。假设 Image_1 位于位置 z=0,而 Image_2 位于位置 z=2。我想要位置 z=1 的插值图像。

我相信这个答案(MATLAB)包含类似的问题和解决方案。

使用 MATLAB 在 3D MRI 体积中创建中间切片

我尝试将此代码转换为 Python,如下所示:

from scipy.interpolate import interpn
from scipy.interpolate import griddata

# Construct 3D volume from images
#    arr.shape = (2, 182, 182)
arr = np.r_['0,3', image_1, image_2]

slices,rows,cols = arr.shape

# Construct meshgrids
[X,Y,Z] = np.meshgrid(np.arange(cols), np.arange(rows), np.arange(slices));
[X2,Y2,Z2] = np.meshgrid(np.arange(cols), np.arange(rows), np.arange(slices*2));

# Run n-dim interpolation
Vi = interpn([X,Y,Z], arr, np.array([X1,Y1,Z1]).T)
Run Code Online (Sandbox Code Playgroud)

但是,这会产生错误:

ValueError: The points in dimension …
Run Code Online (Sandbox Code Playgroud)

python numpy image scipy

10
推荐指数
2
解决办法
7495
查看次数

如何将矢量重塑为TensorFlow的过滤器?

我想将一些由另一个网络训练的权重转移到TensorFlow,权重存储在一个向量中,如下所示:

[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]

通过使用numpy,我可以将它重塑为两个3乘3的过滤器,如下所示:

1 2 3     9  10 11
3 4 5     12 13 14
6 7 8     15 16 17
Run Code Online (Sandbox Code Playgroud)

因此,我的过滤器的形状是(1,2,3,3).但是,在TensorFlow中,过滤器的形状为(3,3,2,1):

tf_weights = tf.Variable(tf.random_normal([3,3,2,1]))
Run Code Online (Sandbox Code Playgroud)

在将tf_weights重塑为预期形状后,重量变得混乱,我无法获得预期的卷积结果.

具体来说,当图像或滤镜的形状是[数字,通道,大小,大小]时,我写了一个卷积函数,它给出了正确的答案,但它太慢了:

def convol(images,weights,biases,stride):
    """
    Args:
      images:input images or features, 4-D tensor
      weights:weights, 4-D tensor
      biases:biases, 1-D tensor
      stride:stride, a float number
    Returns:
      conv_feature: convolved feature map
    """
    image_num = images.shape[0] #the number of input images or feature maps
    channel = images.shape[1] #channels of an image,images's shape should be like [n,c,h,w] …
Run Code Online (Sandbox Code Playgroud)

python numpy tensorflow

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

使用scipy.interpolate.interpn插入一个N维数组

假设我的数据取决于4个变量:a,b,c和d.我想插值返回一个对应于a和b的单个值的二维数组,以及一个c和d的值数组.但是,阵列大小不必相同.具体而言,我的数据来自晶体管模拟.电流取决于4个变量.我想绘制一个参数变化.参数上的点数远小于水平轴的点数.

import numpy as np
from scipy.interpolate import interpn
arr = np.random.random((4,4,4,4))
x1 = np.array([0, 1, 2, 3])
x2 = np.array([0, 10, 20, 30])
x3 = np.array([0, 10, 20, 30])
x4 = np.array([0, .1, .2, .30])
points = (x1, x2, x3, x4)
Run Code Online (Sandbox Code Playgroud)

以下作品:

xi = (0.1, 9, np.transpose(np.linspace(0, 30, 4)), np.linspace(0, 0.3, 4))
result = interpn(points, arr, xi)
Run Code Online (Sandbox Code Playgroud)

这样做:

xi = (0.1, 9, 24, np.linspace(0, 0.3, 4))
result = interpn(points, arr, xi)
Run Code Online (Sandbox Code Playgroud)

但不是这个:

xi = (0.1, 9, np.transpose(np.linspace(0, 30, 3)), …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy python-2.7

4
推荐指数
1
解决办法
6914
查看次数