python - 有效地初始化多个numpy数组
问题描述
我需要初始化多个具有相同形状的 numpy 数组。想知道哪条路最好走:
- 为每个写一行:
dist_x=np.zeros((1,len(pose07)-1))
dist_y=np.zeros((1,len(pose07)-1))
rots_absulute=np.zeros((1,len(pose07)-1))
rots=np.zeros((1,len(pose07)-1))
- 先计算长度,保存为参数:
length=len(pose07)-1
dist_x=np.zeros(1,length)
dist_y=np.zeros(1,length)
rots_absulute=np.zeros(1,length)
rots=np.zeros(1,length)
- 初始化其中一个,然后复制多次:
dist_x=np.zeros((1,len(pose07)-1))
dist_y=np.copy(dist_x)
rots_absulute=np.copy(dist_x)
rots=np.copy(dist_x)
或者也许有更好的方法?
解决方案
arr1, arr2, arr3, arr4 = np.zeros((4, 1, len(pose07)-1))
编辑:跑了一些基准
def func1(inp):
a = np.zeros([1, len(inp)])
b = np.zeros([1, len(inp)])
c = np.zeros([1, len(inp)])
d = np.zeros([1, len(inp)])
return 1
def func2(inp):
length = len(inp)
a = np.zeros([1, length])
b = np.zeros([1, length])
c = np.zeros([1, length])
d = np.zeros([1, length])
return 1
def func3(inp):
a = np.zeros([1, len(inp)])
b = np.copy(a)
c = np.copy(a)
d = np.copy(a)
return 1
def func4(inp):
a, b, c, d = np.zeros([4, 1, len(inp)])
return 1
import perfplot
bench = perfplot.bench(
n_range= range(1, 50),
setup= lambda n: np.random.randint(100, size= [n]),
kernels= [
func1,
func2,
func3,
func4
]
)
bench.show()
根据基准 func2 (其中长度首先存储在变量中)似乎表现最好,
并尽量避免使用 func 4,正如 Paul Panzer 在下面的评论中指出的那样,func 4 会导致内存泄漏
推荐阅读
- c# - DirectoryInfo.在 Windows Server 2016 上创建截断目录名称
- r - 通过长格式的某个变量获取索引
- sublimetext3 - 从 git bash 启动 Sublime Text 会导致终端无响应,直到 Sublime 关闭
- javascript - 如何一次只设置一个表格行“table-active”?
- python - 如何并行化程序以在 python 中读取和写入大文件?
- graphql - 如何给类型起别名(例如字符串、整数...)
- angular - 使用时间戳字段的 Angular Firestore 问题
- python - 如何使用 Python 将 PDF 转换为干净的 HTML
- angular - Angular 组件没有被渲染
- java - 如何使用递归java创建二维数组非重复数字