Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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
逐行构造NumPy矩阵_Numpy_Python 3.6 - Fatal编程技术网

逐行构造NumPy矩阵

逐行构造NumPy矩阵,numpy,python-3.6,Numpy,Python 3.6,我正在尝试使用迭代过程从现有2D NumPy数组中的值构造2D NumPy数组。使用普通python列出了我正在描述的流程,如下所示: coords = #data from file contained in a 2D list d = #integer edges = [] for i in range(d+1): for j in range(i+1, d+1): edge = coords[j] - coords[i] edges.append(e

我正在尝试使用迭代过程从现有2D NumPy数组中的值构造2D NumPy数组。使用普通python列出了我正在描述的流程,如下所示:

coords = #data from file contained in a 2D list
d = #integer
edges = []
for i in range(d+1):
    for j in range(i+1, d+1):
        edge = coords[j] - coords[i]
        edges.append(edge)
但是,NumPy数组施加的限制不允许上面所示的过程。下面,我尝试使用NumPy阵列做同样的事情,应该立即清楚问题出在哪里:

coords = np.genfromtxt('Energies.txt', dtype=float, skip_header=1)
d = #integer
#how to initialize?
for i in range(d+1):
    for j in range(i+1, d+1):
        edge = coords[j] - coords[i]
        #how to append?
因为NumPy数组不存在.append,所以我需要依赖concatenate或stack。但是这些函数是为了连接现有的数组而设计的,在循环的第一次迭代之前,我没有任何东西可以连接或堆叠。所以我想我需要改变我的数据流,但我不确定该怎么做


任何帮助都将不胜感激。提前感谢。

该函数是numpy.meshgrid[1],默认情况下该函数会执行此操作


[1]

为什么不坚持使用第一个代码,然后执行
edges\u arr=np.asarray(edges)
?因为这样我就必须手动解析坐标文件,而不是使用numpy.genfromtxt。此外,我还需要计算来自edges数组和coords数组的值,因此我希望与我的容器保持一致。好的,我们需要一个可复制的代码和输出,以清楚地表明您正在尝试做什么。您现在拥有的是不完整的代码和修复它的请求。1) 从列表中创建数组,2)初始化大小合适的
zeros
数组,并迭代设置“row”值。不要试图将数组压缩到列表模型中。
coords
是一个(m,n)数组。看起来您想要获取行之间的所有差异,生成一个(m,m,n)数组。唯一特别的是,您试图避免重复,只得到值的上(或下)三角形。不幸的是,这不是我要找的。该函数从一组坐标向量返回一个坐标矩阵。我已经有了一个矩阵,表示空间中不适合网格的一组点,我想要一组可以从这些点构造的非冗余向量。您可以搜索类似于scipy.interpolate.interp2d的内容