numpy数组能否包含子数组?如何实现子数组按位求和?
嘿,别担心对Python不太熟悉——谁都是从摸不着头脑的新手阶段过来的!咱们一步步来解决你的两个问题:
问题1:能否将
numpy.array作为元素添加到空numpy数组中? 答案是可以,但直接用np.append容易踩坑——因为NumPy数组是固定维度的结构,直接往空数组里append子数组会把它拆平成一维数组,比如:
import numpy as np empty_arr = np.array([]) sub_arr = np.array([1,2,3]) empty_arr = np.append(empty_arr, sub_arr) print(empty_arr) # 输出: [1. 2. 3.] —— 这不是你要的嵌套结构
更稳妥的做法是先把所有子数组存在普通Python列表里,最后再转成NumPy数组:
sub_arr_list = [] sub_arr_list.append(np.array([1,2,3])) sub_arr_list.append(np.array([4,5,6])) main_arr = np.array(sub_arr_list) print(main_arr) # 输出: # [[1 2 3] # [4 5 6]]
如果一定要用NumPy原生方法拼接,也可以用np.vstack(前提是所有子数组的维度一致):
main_arr = np.vstack([np.array([1,2,3]), np.array([4,5,6])])
问题2:对主数组中多个子数组的对应位置元素求和
这个超简单!NumPy内置的求和方法可以直接指定**轴(axis)**来实现对应位置相加。比如你的例子:
import numpy as np # 假设a/b/c/d/e/f是具体数值,比如: main_arr = np.array([np.array([1,2,3]), np.array([4,5,6])]) # 沿axis=0求和(也就是按列相加,对应子数组的相同位置元素) sum_result = main_arr.sum(axis=0) print(sum_result) # 输出: [5 7 9]
这里的axis=0表示沿着第一个维度(也就是子数组所在的维度)进行求和,正好对应你要的“每个子数组的第n个元素相加”的需求。如果你的主数组是更高维度的,只要调整axis参数就能灵活控制求和方向。
内容的提问来源于stack exchange,提问作者Jordan Vance
相关产品推荐
相关产品推荐

