python - 如何将 a、b、c、d 分配给 python 列表中的不同行?
问题描述
我有一组值 a,b,c,d 我想创建一个 nx1 向量,根据 n 的大小将值分配给不同的行。如果 n=9 我希望向量是 [a+b, a, a+c, b, 0, c, b+c, d, c+d] 或者如果 n=4 我的向量是 [a+b, a+c、b+c、c+d]。对于row=1,条目是a+b,对于行sqrt(n),条目是a+c,介于(即1 和sqrt(n))之间的条目是a。对于 row=sqrt(n)+ 1,条目是 b,对于 2 sqrt(n),条目是 c,中间的条目是 a。对于 row=2 sqrt(n)+1 entry=b+c,对于 row=n,条目是 c+d,中间的条目是 d。n 的不同值是 n=4、9、25、100、225 和 400。有没有办法使用 for 循环构建这个向量,而不是手动创建 nx1 向量并使用 if 语句来分配相关的手动创建的向量?
解决方案
我已经分开 n=4 因为它是一个特例
import numpy as np
n = 400
a,b,c,d = 1,2,4,8
result = np.empty((n,1))
sqrtn = n**0.5
if n == 4:
result[:,0] = [a+b, a+c, b+c, c+d]
else:
index1 = 0
index2 = int(sqrtn)-1
Index3 = int(sqrtn)
index4 = int(2*sqrtn)-1
index5 = int(2*sqrtn)
index6 = int(n)-1
result[Index3+1:index4] = 0
result[index1+1:index2] = a
result[index5+1:index6] = d
result[index1] = a+b
result[index2] = a+c
result[Index3] = b
result[index4] = c
result[index5] = b+c
result[index6] = c+d
推荐阅读
- c# - 如何编写一个 linq 查询来排除一些记录?
- scala - Future.successful(Failure(Exception)) 与只是 Future.failed()
- graphql - 如何在 Github Workflow 中访问 GraphQL 变异结果
- javascript - 页面之间的信息丢失
- javascript - 在 NextJS 中未使用 axios 拦截器定义 localStorage
- python - 在数据框中计算滚动和的更快方法
- ios - Swift 实例成员和函数调用,有人可以澄清一下吗?
- r - 根据R中另一列的最小值获得一列的对应值
- sql - 使用多行子查询
- python - PyTorch:将预训练模型从 3 个 RGB 通道更改为 4 个通道后出现“ValueError:无法优化非叶张量”