我有一个包含多个数组的列表,我希望它们具有相同的大小,用nan填充较少的元素。我有一些具有整数的数组,而另一些具有字符串的数组。
例如:
a = ['Nike']
b = [1,5,10,15,20]
c = ['Adidas']
d = [150, 2]
我尝试过
max_len = max(len(a),len(b),len(c),len(d))
empty = np.empty(max_len - len(a))
a = np.asarray(a) + empty
empty = np.empty(max_len - len(b))
b = np.asarray(b) + empty
我对所有数组都做同样的事情,但是会发生错误(TypeError:只能将整数标量数组转换为标量索引)
之所以这样做,是因为我想创建一个DataFrame并将所有数组作为不同的列。
谢谢您
答案 0 :(得分:3)
我建议您使用lists
,因为您也有strings
。这是使用zip_longest
的一种方法:
from itertools import zip_longest
a, b, c, d = map(list,(zip(*zip_longest(a,b,c,d, fillvalue=float('nan')))))
print(a)
# ['Nike', nan, nan, nan, nan]
print(b)
# [1, 5, 10, 15, 20]
print(c)
# ['Adidas', nan, nan, nan, nan]
print(d)
# [150, 2, nan, nan, nan]
另一种方法可能是:
max_len = len(max([a,b,c,d], key=len))
a, b, c, d = [l+[float('nan')]*(max_len-len(l)) for l in [a,b,c,d]]
答案 1 :(得分:2)
怎么样?
<iothubname>/<deviceid>/api-version=2016-11-14
答案 2 :(得分:0)
您应该使用numpy.append(array, value, axis)
附加到数组。在您的示例中为ans = np.append(a,empty)
。
答案 3 :(得分:0)
您可以像这样直接进行操作:
MaterialPageRoute