如何在一个列表中处理数组批量?
我需要一个结果的列表,但输出的数据是数组。我想这就是为什么列表里全是“数组”的原因。我想把这个列表画成图,因为格式看起来很奇怪,所以我只能把第一个数据放进图里。
def slopee(x1,y1,x2,y2):
x = (y2 - y1) / (x2 - x1)
return x
b = []
for i in range(0,46,1):
a = np.array(slopee(x[i],y[i],x[i + 4],y[i + 4]))
if a>0:
b.append(a)
print(b)
我得到了
[array(0.98788163), array(0.85617906), array(1.00844463), array(1.07600014), array(1.21457582), array(1.32036217), array(1.2688192), array(1.24681122), array(1.3372714), array(1.10813638), array(0.97427447), array(0.91985401), array(0.73667585), array(0.70897843), array(0.73550956), array(0.83783644), array(0.71404103), array(0.70594792), array(0.61123258), array(0.41485783), array(0.39642736), array(0.3770724), array(0.34367834), array(0.25310249), array(0.2509963), array(0.18238257), array(0.13032926), array(0.13804006), array(0.07159872), array(0.01911869)]
怎么才能得到一个没有数组的正常列表呢?
3 个回答
0
使用
b.append(a.tolist())
而不是
b.append(a)
0
与其一个一个地处理每对 (x_i, y_i),你可以直接对 x 和 y 进行操作(假设它们是 numpy 数组):
import numpy as np
np.random.seed(42)
x = np.random.randint(1, 10, 60)
y = np.random.randint(1, 10, 60)
def slopee(x1,y1,x2,y2):
x = (y2 - y1) / (x2 - x1)
return x
b = []
for i in range(0,46,1):
a = np.array(slopee(x[i],y[i],x[i + 4],y[i + 4]))
if a>0:
b.append(a)
b2 = (y[4:50] - y[:46]) / (x[4:50] - x[:46])
b2 = b2[b2>0]
print(b)
print(b2)
打印输出
[array(4.), array(1.33333333), array(1.), array(3.5), array(2.66666667), array(0.71428571), array(0.75), array(2.), array(6.), array(0.5), array(inf), array(3.5), array(6.), array(1.), array(1.5), array(1.), array(0.8), array(0.4), array(0.14285714), array(0.66666667), array(2.), array(0.33333333)]
[4. 1.33333333 1. 3.5 2.66666667 0.71428571
0.75 2. 6. 0.5 inf 3.5
6. 1. 1.5 1. 0.8 0.4
0.14285714 0.66666667 2. 0.33333333]
以下内容是正确的:
assert np.array_equal(b2, np.array([e.item() for e in b]))
0
只需要去掉 np.array。像这样:
x=list(range(51))
y=list(range(51))
def slopee(x1,y1,x2,y2):
x=((y2 - y1) / (x2 - x1))
return x
b = []
for i in range(0,46,1):
a = slopee(x[i],y[i],x[i + 4],y[i + 4])
if a>0:
b.append(a)
print(b)
因为我没有你的 x 和 y 的数据,所以我随便编了一些,但这里是输出结果,格式是列表。
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]