如何使用for循环创建新的2D numpy数组?

时间:2019-08-11 05:29:54

标签: python-3.x numpy

我之前也问过类似的问题,但是措辞很差。我发现了一些东西,但还没有成功。我正在尝试通过调用先前的函数来创建新的2D数组。我希望function_2进行与function_1相同的计算,只是在function_2中它涉及数组而不是单个值。

这就是我所拥有的:

import numpy as np 

def function_1(A,B):
    A = 10
    B = 2
    ans = A*B
    return ans


def function_2(C,D):

    C = np.array([1,2,3,4,5])
    D = np.array([1,2,3,4,5])

    #here I create a zero array and include some other codes required

    for i in range(C): #each i are A values
        for j in range(D): #each j are B values
            array[i,j] = function_1(C,D)

    return array
print(array)

上面的例子给了我这个

[[25. 25. 25. 25. 25.]
 [25. 25. 25. 25. 25.]
 [25. 25. 25. 25. 25.]
 [25. 25. 25. 25. 25.]
 [25. 25. 25. 25. 25.]]

但是我希望它使用C和D的每个值进行计算,并给我这样的东西:

[[1. 2. 3. 4. 5.]
 [2. 4. 6. 8. 10.]
 [3. 6. 9. 12. 15.]
 [4. 8. 12. 16. 20.]
 [5. 10. 15. 20. 25.]]

谢谢

2 个答案:

答案 0 :(得分:1)

尝试一下。

ans = []
for i in range(1,6):
    a =[]
    for j in range(1,6):
        a.append(i*j)

    ans.append(a)

ans = np.array(ans)
ans

使用np.zeros

ans = np.zeros((5,5),dtype=np.int)
for i in range(1,6):
    for j in range(1,6):
        ans[i-1][j-1]=i*j
ans

答案 1 :(得分:1)

您的代码中有几个错误。让我们来弄清楚。

  1. 您可以在函数开始时使用默认值覆盖输入值:
cmake_minimum_required(VERSION 3.14)
project(project1)

set(CMAKE_CXX_STANDARD 17)

find_package(JNI REQUIRED)

add_executable(project1 main.cpp)

无论将什么参数传递给函数,它都将是const。但是我不明白为什么在您的示例中/usr/lib/jvm/java-8-openjdk而不是def function_1(A, B): -> A = 10 -> B = 2 ...

  1. 您不能将25函数用于数组。请检查功能的the reference
20
  1. 您将数组传递给了range
for i in range(C): #here
    for j in range(D): #here
        array[i, j] = function_1(C,D)

我不明白您是怎么得到这些错误的function_1数组的。但是固定的解决方案应该是:

 -> function_1(C, D)

以及没有功能的更好解决方案

25.

两种解决方案产品:

import numpy as np


def function_1(A, B):
    ans = A * B
    return ans


def function_2(C, D):
    a = np.zeros((len(C), len(D)), dtype=int) # because you have to allocate matrix before use
    for idi, i in enumerate(C):
        for idj, j in enumerate(D):
            a[idi][idj] = function_1(i, j)

    return a


C = np.array([1, 2, 3, 4, 5])
D = np.array([1, 2, 3, 4, 5])
array = function_2(C, D)
print(array)