Python中拼接两个numpy.arange数组仅得第一个数组的问题求助
问题分析与解决方案:numpy.arange生成空数组导致拼接失败
嘿,我来帮你揪出问题所在~你遇到的情况是因为第二个np.arange根本没生成任何元素,所以拼接后自然只有第一个数组的内容啦!
问题根源
numpy.arange(start, stop, step)的工作逻辑是:从start开始,每次加上step,直到超过stop为止(注意是超过,不是等于)。你写的b = np.arange(10, 7, 0.5)里,起始值10比终止值7大,但步长是正的0.5,这样每次加步长只会离终止值越来越远,numpy找不到符合条件的元素,所以b其实是个空数组array([], dtype=float64)。
修正方案
只需要把第二个arange的步长改成负数-0.5,让它从10开始往下递减,直到接近7(不包含7):
import numpy as np a = np.arange(3,6, 0.5, dtype = float) b = np.arange(10, 7, -0.5, dtype = float) # 这里把步长改成-0.5 c=np.concatenate((a, b)) print(c)
运行这段代码后,输出就会和你期望的一致:
[3. 3.5 4. 4.5 5. 5.5 10. 9.5 9. 8.5 8. 7.5]
小提示
别忘了np.arange的终止值是不包含的哦,所以你设置stop=7正好能得到最后一个元素7.5(因为10 - 5*0.5 =7.5,下一个元素7就会被排除),完美匹配你的需求~
内容的提问来源于stack exchange,提问作者Noemí
相关产品推荐
相关产品推荐

