如何在循环内创建计算值的numpy数组

时间:2019-03-23 17:17:28

标签: python arrays numpy

我想创建一个两列的数组,以便第二列从数组中的第一列生成。

这是我能做的最好的事情……它只是将x和y堆叠在一起,一个堆叠在其自身之上。

import numpy as np
from numpy import array

n= 100
results= np.array([])

for x in range(0, 100):  
    y= x*x
    new_row = [x, y]
    results = np.append(results, new_row)

我让这个工作了……最终!!!

import numpy as np
from numpy import array

results= np.zeros(shape=(0,2))

for x in range(0, 100): 
    y = x*x
    row = array([[x, y]])
    results = np.concatenate((results, row))

2 个答案:

答案 0 :(得分:2)

np.column_stack可以解决问题:

>>> a = np.array(range(100))
>>> b = np.column_stack((a, a**a))
>>> b
array([[                   0,                    1],
       [                   1,                    1],
       [                   2,                    4],
       [                   3,                   27],
       [                   4,                  256],
       [                   5,                 3125],
       [                   6,                46656],
       [                   7,               823543],
       [                   8,             16777216],
       [                   9,            387420489],
       [                  10,          10000000000],
       [                  11,         285311670611],
       [                  12,        8916100448256],
       [                  13,      302875106592253],

答案 1 :(得分:1)

列表理解可以为您做到这一点:

import numpy as np
results = np.array([[x, x**2] for x in range(100)])

这将为您提供两列的数组:

Out[5]: 
array([[   0,    0],
       [   1,    1],
       [   2,    4],
       [   3,    9],
        ...

您刚刚评论说,该函数比x ** 2更复杂-一种解决方案就是将其定义为一个函数,例如

import numpy as np

def func(x): # example functionality
    y = x**2
    y = y*2
    return y

results = np.array([[x, func(x)] for x in range(100)])

Out[13]: 
array([[    0,     0],
       [    1,     2],
       [    2,     8],
       [    3,    18],
       ...