Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于浮点数组将列从2D numpy数组广播到更大的2D数组_Python_Numpy_Matplotlib_Scipy - Fatal编程技术网

Python 基于浮点数组将列从2D numpy数组广播到更大的2D数组

Python 基于浮点数组将列从2D numpy数组广播到更大的2D数组,python,numpy,matplotlib,scipy,Python,Numpy,Matplotlib,Scipy,我不太清楚该怎么说,所以我会尽量在我的描述中说清楚。 现在我有一个3D numpy数组,其中第一列表示深度,第二列表示x轴上的位置。我的目标是制作一个pcolor,其中列根据1D浮点数组中的值沿x轴展开 这里有点棘手,我只知道点之间的相对距离。即第1列和第2列之间的距离,依此类推 以下是我所拥有和想要的示例: darray = [[2 3 7 7] [4 8 2 3] [6 1 9 5] [3 4 8 4]]

我不太清楚该怎么说,所以我会尽量在我的描述中说清楚。 现在我有一个3D numpy数组,其中第一列表示深度,第二列表示x轴上的位置。我的目标是制作一个pcolor,其中列根据1D浮点数组中的值沿x轴展开

这里有点棘手,我只知道点之间的相对距离。即第1列和第2列之间的距离,依此类推

以下是我所拥有和想要的示例:

darray = [[2  3  7  7]
          [4  8  2  3]
          [6  1  9  5]
          [3  4  8  4]]

posarray = [ 3.767, 1.85, 0.762]

DesiredArray = [[2  0  0  0  3  0  7  7]
                [4  0  0  0  8  0  2  3]
                [6  0  0  0  1  0  9  5]
                [3  0  0  0  4  0  8  4]]
我是如何实现它的:

def space_set(darr, sarr):
    spaced = np.zeros((260,1+int(sum(sarr))), dtype = float)
    x = 0
    for point in range(len(sarr)):
            spaced[:, x] = darr[:,point]
            x = int(sum(sarr[0:point]))
    spaced[:,-1] = darr[:,-1]
然后我打算用matplotlibs pcolor来绘制它。不过,此方法似乎丢失了列。有没有直接绘图或制作一个numpy数组来绘图的想法?提前谢谢


这是我要找的一个例子。

既然有这么多的空白,也许画出来比使用更容易。作为奖励,您可以将矩形精确地放置在所需的位置,而无需将其“捕捉”到整数值网格。而且,您不必为主要由零填充的较大2D数组分配空间。(在您的情况下,所需的内存可能很小,但该想法的扩展性不好,因此如果我们可以避免这样做,那就太好了。)

屈服


既然有这么多的空白,也许画出来比使用更容易。作为奖励,您可以将矩形精确地放置在所需的位置,而无需将其“捕捉”到整数值网格。而且,您不必为主要由零填充的较大2D数组分配空间。(在您的情况下,所需的内存可能很小,但该想法的扩展性不好,因此如果我们可以避免这样做,那就太好了。)

屈服


我刚刚想到了一件事,如果我想要一个与原始(>1)值对应的颜色映射呢?哦,是的。那还可能吗?我只是想到了一些事情,如果我想要一个与原始(>1)值对应的颜色映射呢?哦,是的。那还有可能吗?
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as patches
import matplotlib.cm as cm

def draw_rect(x, y, z):
    rect = patches.Rectangle((x,y), 1, 1, color = jet(z))
    ax.add_patch(rect)

jet = plt.get_cmap('jet')
fig = plt.figure()
ax = fig.add_subplot(111)

darray = np.array([[2, 3, 7, 7],
                   [4, 8, 2, 3],
                   [6, 1, 9, 5],
                   [3, 4, 8, 4]], dtype = 'float')
darray_norm = darray/darray.max()

posarray = [3.767, 1.85, 0.762]
x = np.cumsum(np.hstack((0, np.array(posarray)+1)))

for j, i in np.ndindex(darray.shape):
    draw_rect(x[j], i, darray_norm[i, j])
ax.set_xlim(x.min(),x.max()+1)
ax.set_ylim(0,len(darray))
ax.invert_yaxis()    
m = cm.ScalarMappable(cmap = jet)
m.set_array(darray)
plt.colorbar(m)
plt.show()