我有一个函数,每秒返回一个numpy数组,我想存储在另一个数组中以供参考。例如(返回array_a)
array_a = [[ 25. 50. 25. 25. 50. ]
[ 1. 1. 1. 1. 1. ]]
array_collect = np.append(array_a,array_collect)
但是当我打印array_collect时,我得到一个添加的数组,而不是一个包含数组的更大数组。
array_collect = [ 25. 50. 25. 25. 50.
1. 1. 1. 1. 1.
25. 50. 25. 25. 50.
1. 1. 1. 1. 1.
25. 50. 25. 25. 50. ]
我想要的是
array_collect = [ [[ 25. 50. 25. 25. 50. ]
[1. 1. 1. 1. 1. ]]
[[ 25. 50. 25. 25. 50. ]
[1. 1. 1. 1. 1. ]]
[[ 25. 50. 25. 25. 50. ]
[1. 1. 1. 1. 1. ]] ]
我如何得到它?
答案 0 :(得分:1)
以这种方式使用np.concatenate()
和reshape
:
import numpy as np
array_collect = np.array([[25.,50.,25.,25.,50.],[1.,1.,1.,1.,1.]])
array_a = np.array([[2.,5.,2.,2.,5.],[1.,1.,1.,1.,1.]])
array_collect = np.concatenate((array_collect,array_a),axis=0).reshape(2,2,5)
>>
[[[ 25. 50. 25. 25. 50.]
[ 1. 1. 1. 1. 1.]]
[[ 2. 5. 2. 2. 5.]
[ 1. 1. 1. 1. 1.]]]
答案 1 :(得分:1)
您可以使用vstack
:
array_collect = np.array([[25.,50.,25.,25.,50.],[1.,1.,1.,1.,1.]])
array_a = np.array([[2.,5.,2.,2.,5.],[1.,1.,1.,1.,1.]])
array_collect=np.vstack((array_collect,array_a))
但是,如果您事先知道总分钟数,最好先定义数组(例如使用zeros
)并逐渐填充它 - 这样,更容易保持在内存限制内
no_minutes = 5 #say 5 minutes
array_collect = np.zeros((no_minutes,array_a.shape[0],array_a.shape[1]))
然后,每分钟,m
array_collect[m] = array_a
答案 2 :(得分:0)
我发现了,这可以通过使用:
来完成 np.reshape()
形成的新数组可以使用
重新整形y= np.reshape(y,(a,b,c))
其中a是否。数组存储和(b,c)是原始数组的形状