编辑
所以我现在才明白,Python和Numpy并不能很好地实现多态性。给定相同的数据,在大多数函数可以使用它之前,它必须被放入正确的形式。所以期望Python能够“一行”的东西超出了它的能力。
只是为了比较,MATLAB也不做多态性很好,但它不太明显,因为默认情况下,它将所有数值数据保持为2D数组,因此大多数函数将与大多数数据一起工作-使其变得更加容易
编辑
我是Python的新手,很难从现有的数组中创建新的数组:
在MATLAB中,下面的工作是从其他列向量创建列向量:
a = [B(5:6); c(N:M); d(1:P); e(Q)]
具有很大的计算灵活性(例如,Q可以是向量)。
在Python中,我找不到一个很好的命令来将多个1D NumPy数组添加在一起,它似乎对单个值有很多问题,因为它将它们从NumPy数组更改为其他格式,为什么?
有没有人给予一行代码来实现上面的操作?如果能看到就太好了--到目前为止,我所得到的只是一行又一行的索引变量(N,M,P,Q)的检查,还有很多np.array(..)到处都在试图保持相同的数据类型。
我试过np.append,但它对多个向量不起作用(我可以嵌套它们,但这看起来非常丑陋,特别是如果我需要添加许多数组)和np.concatenate抱怨某些东西是0维的,我一点也不明白。
3条答案
按热度按时间lyr7nygr1#
concatenate
对于一堆1d数组没有问题:字符串
如果一个参数是标量:
型
它从最后一个数组
型
但这是一个0 d数组。在MATLAB中,这将是2d的-一切都是2d的,没有真正的标量。记住,
numpy
在python中工作,python有标量和列表。MATLAB是矩阵一路向下...numpy数组也可以是0 d或1d。没有人为的2d下限。它是一种通用的数组语言,而不仅仅是矩阵。在MATLAB中,即使是3d也是对原始2d的调整。
hstack
添加了一个调整,以确保所有参数至少为1d:型
即使在MATLAB/倍频程不匹配的尺寸给予的问题:
型
1hdlvixo2#
你会想看看np.concatenate,它需要数组序列和轴来连接它们。
mctunoxg3#
如果我理解正确的话,你有一个标量数组序列,你想把它们连接成一个序列,但是当你试图连接它们的时候,标量会带来麻烦。
你应该首先将所有标量转换成单例数组。然后连接它们。类似于:
字符串