如何将文本文件中的值存储到2D Numpy数组中?

时间:2019-11-03 16:27:41

标签: python arrays python-3.x numpy

我在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]  

'''

如何存储每一列而不是仅存储一列?

1 个答案:

答案 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

希望这会有所帮助。