问题描述
我在数据文件中有一个这样的数组:
0 822.6 1391.3 1
0 822.6 1391.3 2
0 708.3 1501.2 3
0 708.3 1501.2 4
0 632.5 1585.8 5
0 632.5 1585.8 6
0 552.4 1652.6 7
0 552.4 1652.6 8
250 850.8 1358.6 1
250 803.3 1406.2 2
250 732.0 1481.9 3
250 694.9 1519 4
250 642.9 1566.5 5
250 613.2 1594.7 6
250 570.2 1637.8 7
250 537.5 1663 8
我想根据最后一列创建单独的数据集。
换句话说,我想要这样的东西:
while data[:,3] != 9:
if data[:,3] == 1:
x1 = data[:,0]
y1= (data[:,1]-data[:,2])**2
if data[:,3] == 2:
x2 = data[:,0]
y2= (data[:,1]-data[:,2])**2
依此类推...我只输入不等于9,因为我总是在最后一列中只有1-8
。
我知道这是完全错误的,但是我需要帮助。
1楼
考虑以下:
a = array([[ 0.64910219, 0.06868991, -0.34844128, 0. ],
[-1.34767042, -1.77338287, 0.693539 , 1. ],
[ 1.31245883, -2.08879047, -0.83514187, 3. ],
[ 0.43156959, 0.31388795, 0.2856625 , 1. ],
[-0.60531108, -0.63226693, 0.32063803, 2. ],
[-0.47538621, -0.64196643, -0.82296546, 3. ],
[ 0.3491207 , -1.25406403, 1.21754411, 0. ],
[-1.1573242 , 1.1636706 , 0.63733285, 2. ]])
d0 = a[a[:,3]==0,:]
d1 = a[a[:,3]==1,:]
d2 = a[a[:,3]==2,:]
d3 = a[a[:,3]==3,:]
变量d0,d1,d2,d3在最右边的列中包含具有适当值的行。
>>> d0
array([[ 0.64910219, 0.06868991, -0.34844128, 0. ],
[ 0.3491207 , -1.25406403, 1.21754411, 0. ]])
>>> d1
array([[-1.34767042, -1.77338287, 0.693539 , 1. ],
[ 0.43156959, 0.31388795, 0.2856625 , 1. ]])
>>> d2
array([[-0.60531108, -0.63226693, 0.32063803, 2. ],
[-1.1573242 , 1.1636706 , 0.63733285, 2. ]])
>>> d3
array([[ 1.31245883, -2.08879047, -0.83514187, 3. ],
[-0.47538621, -0.64196643, -0.82296546, 3. ]])
要创建您在文章中提到的x1,y1等,您只需要操纵这些数组即可。
x1 = d1[:,0]
y1 = (d1[:,1] - d1[:,2])**2
第四列的其他值依此类推。 对于少量可能的值(1-8),对不同的变量进行硬编码还不错,但是此方法可以轻松地将其概括为具有计算出的输出列表的任意列表。