取向量的不同幂并保存在txtfi中

2024-05-17 00:04:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试对一个向量取不同的幂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^qq保存在一个txtfile中,每个列都是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做的)

提前感谢您的帮助


Tags: 函数in元素forlennprange数组
1条回答
网友
1楼 · 发布于 2024-05-17 00:04:14

首先,循环遍历数组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)

这不是你想要的,你想要的是列是向量。看看^{}

实际上还有另一种方法,就是通过巧妙的广播来实现无循环:

res = c[:, None] ** q[None, :]

然后您可以保存您的文件,例如使用^{}。我让你去弄清楚为了得到你想要的保存文件,必须设置哪些参数

相关问题 更多 >