如何使用for循环创建2d NumPy数组[Python]

时间:2018-05-17 15:05:42

标签: python arrays numpy multidimensional-array

遇到问题有一个双循环,在辅助循环上我们得到一个包含10个元素的数组。然后,在每个循环(第一个)之后,您需要将这些元素添加到数组中。在输出中,您需要获取表单数组:

result_array = [[inter2d_resultFIRST],[inter2d_resultSECOND],[inter2d_resultTHIRD]]

代码:

points = np.array([[-100, 0], [100, 0], [100, 300],[-100,300]])
density = 1000 
result_array = np.array([])
visual_x = np.array([])

for h in range(3):
    points = np.array([[-100, 0], [100, 0], [100, 300],[-100,300]])
    inter_result = np.array([])
    inter2d_result = np.array([])
    poly = [mesher.Polygon(points,{'density': density})]
    xp = np.arange(-10000, 10000, 10.0)
    zp = np.zeros_like(xp)
    for i in range(10):
        poly = [mesher.Polygon(points,{'density': density})]
        xp = np.arange(-10000, 10000, 10.0)
        zp = np.zeros_like(xp)
        gz = talwani.gz(xp, zp, poly)
        inter_result = np.append(inter_result, np.nanmax(gz))
        visual_x = np.append(visual_x, points[1][0]*2)
        points[0][0] = points[0][0] - 10
        points[1][0] = points[1][0] + 10
        points[2][0] = points[2][0] + 10
        points[3][0] = points[3][0] - 10
    inter2d_result = np.append(inter2d_result,inter_result)
    result_array = np.append(result_array[h], inter2d_result)

获取错误:

IndexError                                Traceback (most recent call last)
<ipython-input-87-c3ef6fe1381b> in <module>()
     40 
     41     inter2d_result = np.append(inter2d_result,inter_result)
---> 42     result_array = np.append(result_array[h], inter2d_result)
     43 
     44 

IndexError: index 0 is out of bounds for axis 0 with size 0

2 个答案:

答案 0 :(得分:2)

首先让我们关注追加操作,

import numpy as np
a = np.array( [1,2,3] )
b = np.array( [4,5,6] )

np.append( a, b )

产生

数组([1,2,3,4,5,6])

你可能想要的是

np.append( [a], [b], 0 )

产生

数组([[1,2,3],[4,5,6]])

请注意,此处在第三个参数中出现0以指定追加操作的轴。

关于错误,索引h告诉numpy附加到'h'元素。这可能不是你想要的。此外,索引不正确,因为'h'总是比调用发生点的数组中的元素数多一个。

答案 1 :(得分:0)

我认为您正在尝试将值附加到result_array。你应该在没有(h)的情况下尝试,因为它将尝试索引在index_中的result_array中已存在的值。但是因为数组是空的,所以没有第0个值,第一次迭代时h = 0,所以这就是你得到错误的原因。

也许试试<ion-header> <ion-navbar> <ion-title> Ionic Blank </ion-title> </ion-navbar> </ion-header> <ion-content padding> <ion-card> <ion-card-header> Image </ion-card-header> <ion-card-content> <image></image> </ion-card-content> </ion-card> <ion-card> <ion-card-header> video </ion-card-header> <ion-card-content> <video></video> </ion-card-content> </ion-card> <ion-card> <ion-card-header> Audio </ion-card-header> <ion-card-content> <audio></audio> </ion-card-content> </ion-card> </ion-content>