如何使用fromiter构造一个np.array

如何使用fromiter构造一个np.array,第1张

概述我试图通过从 python生成器中取样来构造一个np.array,每次调用next时会生成一行数组.以下是一些示例代码: import numpy as npdata = np.eye(9)labels = np.array([0,0,0,1,1,1,2,2,2])def extract_one_class(X,labels,y):""" Take an array of data X, 我试图通过从 python生成器中取样来构造一个np.array,每次调用next时会生成一行数组.以下是一些示例代码:

import numpy as npdata = np.eye(9)labels = np.array([0,1,2,2])def extract_one_class(X,labels,y):""" Take an array of data X,a column vector array of labels,and one particular label y.  Return an array of all instances in X that have label y """    return X[np.nonzero(labels[:] == y)[0],:]def generate_points(data,size):""" Generate and return 'size' pairs of points drawn from different classes """     label_Alphabet = np.unique(labels)     assert(label_Alphabet.size > 1)     for useless in xrange(size):         shuffle(label_Alphabet)         first_class = extract_one_class(data,label_Alphabet[0])         second_class = extract_one_class(data,label_Alphabet[1])         pair = np.hstack((first_class[randint(0,first_class.shape[0]),:],second_class[randint(0,second_class.shape[0]),:]))         yIEld pairpoints = np.fromiter(generate_points(data,5),dtype = np.dtype('f8',(2*data.shape[1],1)))

extract_one_class函数返回数据子集:属于一个类标签的所有数据点.我想要得到一个带有shape =(size,data.shape [1])的np.array.目前,上面的代码段会返回错误:

ValueError: setting an array element with a sequence.

fromiter的文档声称返回一维数组.还有一些人曾经使用过fromiter来构建numpy中的记录数组(例如http://iam.al/post/21116450281/numpy-is-my-homeboy).

假设我能以这种方式生成数组,那么我是不是很明显?或者我的numpy不太正确?

解决方法 您可以修改generate_points以生成单个浮点数而不是np.arrays,使用np.fromiter形成一维数组,然后使用.reshape(size,-1)使其成为二维数组.

points = np.fromiter(    generate_points(data,5)).reshape(size,-1)
总结

以上是内存溢出为你收集整理的如何使用fromiter构造一个np.array全部内容,希望文章能够帮你解决如何使用fromiter构造一个np.array所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存