Как создать массив из вычисляемых значений внутри цикла - PullRequest
0 голосов
/ 23 марта 2019

Я хотел бы создать массив из двух столбцов, так чтобы второй столбец генерировался из первого в массиве.

Это лучшее, что я могу сделать ... он просто складывает 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 ]

2 голосов
/ 23 марта 2019

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 голос
/ 23 марта 2019

Понимание списка может сделать это для вас:

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],
        ...

Вы только что прокомментировали, что функция более сложнаячем просто х ** 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],
       ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...