python中向量长度_如何在NumPy中堆叠不同长度的向量? - python

在Python的NumPy库中,堆叠不同长度的向量通常会导致形状不匹配的问题。简单答案是,NumPy原生不支持不规则(锯齿)数组。可以考虑通过填充或使用masked arrays来实现向量的对齐。例如,通过使用`np.resize`和`ma.array`结合`vstack`或`hstack`,可以创建一个掩码数组来处理不同长度的向量,使其能够一起操作。
摘要由CSDN通过智能技术生成

如何堆叠形状n的逐列(x,)向量,其中x可以是任何数字?

例如,

from numpy import *

a = ones((3,))

b = ones((2,))

c = vstack((a,b)) #

c = vstack((a[:,newaxis],b[:,newaxis])) #

hstack可以正常工作,但是沿着错误的维度连接。

参考方案

简短答案:您不能。 NumPy本机不支持锯齿数组。

长答案:

>>> a = ones((3,))

>>> b = ones((2,))

>>> c = array([a, b])

>>> c

array([[ 1. 1. 1.], [ 1. 1.]], dtype=object)

给出一个数组,该数组可能会或可能不会符合您的预期。例如。它不支持sum或reshape之类的基本方法,因此您应该像对待普通的Python列表[a, b]一样对待它(对它进行迭代以执行操作,而不是使用向量化的惯用法)。

存在几种可能的解决方法。最简单的方法是将a和b强制为相同的长度,也许使用masked arrays或NaN表示某些索引在某些行中无效。例如。这是b作为掩码数组:

>>> ma.array(np.resize(b, a.shape[0]), mask=[False, False, True])

masked_array(data = [1.0 1.0 --],

mask = [False False  True],

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值