我试图获取向量c
的不同幂,然后将这些新向量中的每一个保存在单个文本文件中,其中每列都是向量。
例如,数组c
包含元素:
0.836205
0.394242
0.705833
0.361308
0.0597318
-0.0345422
0.864248
0.811093
0.409232
0.150628
0.706122
0.854921
我想将c
提升为权限q=np.arange(-1,5.5,0.5)
并将c^q
保存为txtfile中的所有q
,其中每列为c^q
。
我的输出txtfile应该由13列组成(每列q
一列)。我想我应该使用np.power(c,q)
函数,但我无法弄清楚我必须使用哪个循环来保存所有q's
的所有向量
现在我所做的就是非常机械地和非常低效地解决它:
for i in range(len(c)):
c_2=np.power(c,2)
c2.append(c_2)
表示q的每个值(例如我为q=2
执行了此操作)。
提前感谢您的帮助!
答案 0 :(得分:2)
首先,你循环遍历数组c并取每个元素的平方:
for i in range(len(c)):
c_2=np.power(c,2)
c2.append(c_2)
但numpy提供了自动执行此操作的可能性:
c = np.array([1,2,3])
c2 = np.power(c, 2)
# returns "array([1, 4, 9], dtype=int32)"
因此您可以节省为每个元素执行此操作的工作量。下一个合乎逻辑的步骤是为q
中的每个元素执行操作。因此,您可以对q
进行循环并获取c
的强大功能并附加它:
q = [2,3,4]
res = []
for i in q:
res.append(np.power(c, i))
res = np.array(res)
# afterwards res is just
# array([[ 1, 4, 9],
# [ 1, 8, 27],
# [ 1, 16, 81]], dtype=int32)
这不是你想要的,你希望它是列是vectores。所以看看np.transpose
。
实际上还有另一种方法是通过巧妙的广播来实现它而不需要循环:
res = c[:, None] ** q[None, :]
然后您可以使用np.savetxt
保存文件。我将让你弄清楚必须设置哪些参数才能获得你想要的保存文件。