【发布时间】:2019-10-24 08:04:44
【问题描述】:
我想问一些与此问题相关的问题 Operation on numpy arrays contain rows with different size 。关键是我需要对包含不同大小行的 numpy 数组进行一些操作。
像“list2*list3*np.exp(list1)”这样的标准方法不起作用,因为行的大小不同,而有效的选项是使用 zip。请参阅下面的代码。
import numpy as np
import time
list1 = np.array([[2.,0.,3.5,3],[3.,4.2,5.,7.1,5.]])
list2 = np.array([[2,3,3,0],[3,8,5.1,7.6,1.2]])
list3 = np.array([[1,3,8,3],[3,4,9,0,0]])
start_time = time.time()
c =[]
for i in range(len(list1)):
c.append([list2*list3*np.exp(list1) for list1, list2,list3 in zip(list1[i], list2[i],list3[i])])
print("--- %s seconds ---"% (time.time()-start_time))
我想问是否存在一种更有效的方法来执行此操作,从而避免循环并以更 numpy 的方式进行操作。谢谢!
【问题讨论】:
-
让它们具有特定形状的目的是什么?在函数中调整形状以便可以一次性完成乘法是否有问题?