Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何防止numpy折叠行?_Python_Numpy_Numpy Ndarray_Numpy Ufunc - Fatal编程技术网

Python 如何防止numpy折叠行?

Python 如何防止numpy折叠行?,python,numpy,numpy-ndarray,numpy-ufunc,Python,Numpy,Numpy Ndarray,Numpy Ufunc,我有一个函数,它接受一个numpy数组并输出一个numpy数组。但是,当输出数组包含常量值时,使用numpy数组调用函数会导致所述值“折叠” 我正在尝试使用numpy编写一个向量演算库,并希望将向量传递给向量值函数,而不是依赖于迭代 r1=lambda t:np.数组([2*t,1]) r2=lambda t:np.数组([2*t,1+0*t]) t=np.linspace(0,1) 打印(r1(t).形状) 打印(r2(t).形状) 人们期望r1(t)和r2(t)具有相同的形状,但事实并非如

我有一个函数,它接受一个numpy数组并输出一个numpy数组。但是,当输出数组包含常量值时,使用numpy数组调用函数会导致所述值“折叠”

我正在尝试使用numpy编写一个向量演算库,并希望将向量传递给向量值函数,而不是依赖于迭代

r1=lambda t:np.数组([2*t,1])
r2=lambda t:np.数组([2*t,1+0*t])
t=np.linspace(0,1)
打印(r1(t).形状)
打印(r2(t).形状)
人们期望
r1(t)
r2(t)
具有相同的形状,但事实并非如此
r1(t)
生成一个类似
array([array([…]),1,dtype=object)
r2(t)
生成的结果类似于
array([…],[…])
(其中
[…]
表示一个有效的浮点数组)。我猜
r2(t)
由于浮点错误的变化而正常工作,但我可能错了。有没有办法防止numpy折叠第二行或“展开”第二行

r2
将两个与
t
形状(50,)匹配的数组组合在一起,因此结果是一个(2,50)形状的数字数组


r1
组合了一个(50,)带有标量
1
的数组。结果是一个2元素数组,对象数据类型。看到
r1
显示末尾的悬空
1
了吗?混合不同大小的元素会生成一个类似列表的数组,因为它不能像
r2
那样生成多维数组。我明白了,有没有简单的方法来扩展悬空在r1的末尾加上1,这样就可以很好地与其他numpy例程配合使用,或者我应该改变将向量值函数定义为包装在lambda中的np.array的方法吗?
r2
是一种合理的方法。
np.one-like(t)
是另一种方法。
In [183]: r1 = lambda t: np.array([2*t, 1]) 
     ...: r2 = lambda t: np.array([2*t, 1+0*t]) 
     ...: t = np.linspace(0, 1)                                                                              
In [184]: r1(t)                                                                                              
Out[184]: 
array([array([0.        , 0.04081633, 0.08163265, 0.12244898, 0.16326531,
       0.20408163, 0.24489796, 0.28571429, 0.32653061, 0.36734694,
       0.40816327, 0.44897959, 0.48979592, 0.53061224, 0.57142857,
       0.6122449 , 0.65306122, 0.69387755, 0.73469388, 0.7755102 ,
       0.81632653, 0.85714286, 0.89795918, 0.93877551, 0.97959184,
       1.02040816, 1.06122449, 1.10204082, 1.14285714, 1.18367347,
       1.2244898 , 1.26530612, 1.30612245, 1.34693878, 1.3877551 ,
       1.42857143, 1.46938776, 1.51020408, 1.55102041, 1.59183673,
       1.63265306, 1.67346939, 1.71428571, 1.75510204, 1.79591837,
       1.83673469, 1.87755102, 1.91836735, 1.95918367, 2.        ]),
       1], dtype=object)
In [185]: r2(t)                                                                                              
Out[185]: 
array([[0.        , 0.04081633, 0.08163265, 0.12244898, 0.16326531,
        0.20408163, 0.24489796, 0.28571429, 0.32653061, 0.36734694,
        0.40816327, 0.44897959, 0.48979592, 0.53061224, 0.57142857,
        0.6122449 , 0.65306122, 0.69387755, 0.73469388, 0.7755102 ,
        0.81632653, 0.85714286, 0.89795918, 0.93877551, 0.97959184,
        1.02040816, 1.06122449, 1.10204082, 1.14285714, 1.18367347,
        1.2244898 , 1.26530612, 1.30612245, 1.34693878, 1.3877551 ,
        1.42857143, 1.46938776, 1.51020408, 1.55102041, 1.59183673,
        1.63265306, 1.67346939, 1.71428571, 1.75510204, 1.79591837,
        1.83673469, 1.87755102, 1.91836735, 1.95918367, 2.        ],
       [1.        , 1.        , 1.        , 1.        , 1.        ,
        1.        , 1.        , 1.        , 1.        , 1.        ,
        1.        , 1.        , 1.        , 1.        , 1.        ,
        1.        , 1.        , 1.        , 1.        , 1.        ,
        1.        , 1.        , 1.        , 1.        , 1.        ,
        1.        , 1.        , 1.        , 1.        , 1.        ,
        1.        , 1.        , 1.        , 1.        , 1.        ,
        1.        , 1.        , 1.        , 1.        , 1.        ,
        1.        , 1.        , 1.        , 1.        , 1.        ,
        1.        , 1.        , 1.        , 1.        , 1.        ]])
In [186]: r1(t).shape                                                                                        
Out[186]: (2,)
In [187]: r2(t).shape                                                                                        
Out[187]: (2, 50)