通过嵌套循环创建2D numpy数组

时间:2019-05-06 03:26:41

标签: python

我想使用嵌套循环创建2D数组。这段代码有什么问题?

 <?php
 require_once('dbConnect.php');
 if($_SERVER['REQUEST_METHOD']=='GET') {
    $sql = "SELECT * FROM farm ORDER BY SN" ;
    $res = mysqli_query($con,$sql);
    $result = array();
    while($row = mysqli_fetch_array($res))
      {
      array_push($result, array('no'=>$row[0], 'username'=>$row[1], 
      'SN'=>$row[2]));
      }
 echo json_encode(array("value"=>1,"result"=>$result));
 mysqli_close($con);
 }
?>

4 个答案:

答案 0 :(得分:3)

您正在定义的numpy数组与您正在使用的循环的形状不正确。 b = np.array([])为您提供形状为(0,)

的阵列

您可以使用类似np.zeros之类的东西来定义2D数组。

import numpy as np
b = np.zeros((3,6))
for i in range(2):
    for j in range(5):
        b[i][j]=i+j
print(b)

输出将为

[[0. 1. 2. 3. 4. 0.]
 [1. 2. 3. 4. 5. 0.]
 [0. 0. 0. 0. 0. 0.]]

另一种选择是制作2D列表,将其填充为for循环,然后稍后转换为numpy数组

import numpy as np

#2D array
b = [ [0 for _ in range(6)] for _ in range(3)]

#Fill up array with for loops
for i in range(2):
    for j in range(5):
        b[i][j]=i+j

#Convert to numpy array
print(np.array(b))

输出将为

[[0 1 2 3 4 0]
 [1 2 3 4 5 0]
 [0 0 0 0 0 0]]

答案 1 :(得分:0)

执行此操作的正确方法是遵循以下四个步骤:

1初始化一个空数组以将结果存储在其中

2在循环内部的数据数组的行/列上创建for循环:

3进行计算

4追加结果数组

答案 2 :(得分:0)

我了解您问过如何使用嵌套循环来执行此操作,因此如果您觉得此功能不实用,那么深表歉意。我只是以为我会分享我通常的做法:

b = np.arange(10).reshape(2,5)
print(b)
[[0 1 2 3 4]
 [5 6 7 8 9]]

答案 3 :(得分:0)

这只是一个带有for循环的3D随机初始化技巧。

import numpy as np
np.random.seed(0)  # seed 

x1 = np.random.randint(10, size=3)  # One-dimensional array
x2 = np.random.randint(10, size=(3, 4))  # Two-dimensional array
x3 = np.random.randint(10, size=(3, 4, 5))  # Three-dimensional array

以后,您可能会使用魔术来循环魔术。

for _ in range(2):
    for __ in range(4):
        for ___ in range(5):
            x3[_][__][___]=_+__+___