我想创建一个两列的数组,以便第二列从数组中的第一列生成。
这是我能做的最好的事情……它只是将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))
答案 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],
...