如何将几个向量添加到numpy structered数组并稍后从fieldname调用矩阵?

时间:2018-02-13 13:30:49

标签: python numpy

嘿伙计们我需要帮助..

我想使用tensorflows数据导入,通过调用结构化numpy数组中的features / labels矢量来加载数据。

https://www.tensorflow.org/programmers_guide/datasets#consuming_numpy_arrays

我想通过将2个向量(feature_vec和label_vec)连续添加到numpy结构化数组来创建这样的结构化数组。

import numpy as np

# example vectors
feature_vec= np.arange(10)
label_vec = np.arange(10)

# structured array which should get the vectors
struc_array = np.array([feature_vec,label_vec],dtype=([('features',np.float32), ('labels',np.float32)]))

# How can I add now new vectors to struc_array?

struc_array.append(---)

我想稍后通过使用fieldname从文件调用加载特征向量(现在是矩阵)时加载此数组:

with np.load("/var/data/training_data.npy") as data:
features = data["features"] # matrix containing feature vectors as rows
labels = data["labels"] #matrix containing labels vectors as rows

我尝试编码的所有内容都是完整的废话..从来没有得到正确的输出..

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

不要创建NumPy数组然后追加它。这并没有多大意义,因为NumPy数组具有固定的大小并且需要一个完整的副本来附加单个行或列。相反,创建一个列表,附加到它,然后在最后构造数组:

vecs = [feature_vec,label_vec]
dtype = [('features',np.float32), ('labels',np.float32)]

# append as many times as you want:
vecs.append(other_vec)
dtype.append(('other', np.float32))

struc_array = np.array(vecs, dtype=dtype)

当然,你可能需要ot

答案 1 :(得分:0)

不幸的是,这并没有解决问题。

我想通过使用:

来获取结构化数组中的标签或功能
labels = struc_array['labels']
features = struc_array['features']

但是当我像你一样使用结构化数组时,标签和特征包含所有给定的附加向量:

import numpy as np

feature_vec= np.arange(10)
label_vec = np.arange(0,5,0.5)

vecs = [feature_vec,label_vec]
dtype = [('features',np.float32), ('labels',np.float32)]

other_vec = np.arange(6,11,0.5)

vecs.append(other_vec)
dtype.append(('other', np.float32))

struc_array = np.array(vecs, dtype=dtype)


# This contains all vectors.. not just the labels vector
labels = struc_array['labels']

# This also contains all vectors.. not just the feature vector
features = struc_array['features']