我在txt文件上有一个数据集,该数据集包含373行和3列。我的老师要求我创建2个数组.'array1'存储数据集的所有行,它们的第三列的值为1,而' array2'在column2处存储编号为2的每一行。数组必须是numpy数组。 我试过'class1 = np.zeros(len(dataset))。reshape(len(dataset)// 3,3)'但我收到错误消息: 'ValueError:无法将大小为373的数组重塑为形状(124,3)” 我尝试了各种变化。但是我找不到一种方法来进行2D工作。我只用以下代码设法在两个数组上存储了number1列:
'''
import numpy as np
dataset = np.loadtxt("first_attempt_dataset.txt")
class1 = np.zeros(len(dataset))
class2 = np.zeros(len(dataset))
for i in range(0,len(dataset)):
if dataset[i,2] == 1:
class1[i] = dataset[i][1]
elif dataset[i,2] == 2:
class2[i] = dataset[i][1]
class1 = class1[class1 != 0] #delete the remained zeros from declaration
class2 = class2[class2 != 0]
'''
如何存储每一列而不是仅存储一列?
答案 0 :(得分:0)
我觉得您误解了老师的问题。问题是“ ...'array1'存储数据集的所有行,它们的第三列的值为1,...”,所以我要这样做:
import numpy as np
a = np.array([[1,2,3], [3,2,1], [2,3,1], [2,1,3], [3,1,2]])
b = a[a[:,2]==1]
print(b)
结果是:
[[3 2 1]
[2 3 1]]
类似于问题的后半部分,您需要将列号更改为1
。
希望这会有所帮助。