通常,我通过迭代一些数据来构建数组,例如:
my_array = []
for n in range(1000):
# do operation, get value
my_array.append(value)
# cast to array
my_array = array(my_array)
我发现我必须首先构建一个列表,然后将它(使用" array ")转换为一个数组。有没有办法绕过这些问题?所有这些强制转换调用使代码变得混乱。我如何迭代地构建"my_array",因为它从一开始就是一个数组?
发布于 2010-04-15 08:24:06
如果我没理解错你的问题,这应该是你想做的:
# the array passed into your function
ax = NP.random.randint(10, 99, 20).reshape(5, 4)
# just define a function to operate on some data
fnx = lambda x : NP.sum(x)**2
# apply the function directly to the numpy array
new_row = NP.apply_along_axis(func1d=fnx, axis=0, arr=ax)
# 'append' the new values to the original array
new_row = new_row.reshape(1,4)
ax = NP.vstack((ax, new_row))
发布于 2010-04-16 04:57:31
NumPy提供了一个“fromiter”方法:
def myfunc(n):
for i in range(n):
yield i**2
np.fromiter(myfunc(5), dtype=int)
哪一项会产生
array([ 0, 1, 4, 9, 16])
https://stackoverflow.com/questions/2641691
复制相似问题