Python选择矩阵元素

时间:2014-02-20 19:47:13

标签: python numpy matrix

我有一些大的txt文件,我想从中将数据提取到数组中。他们看起来像:

     0,   9137,   9138,   9138,   9139,   9139,   9140,   9141,   9141,   9142,   9143
    10,   9143,   9144,   9145,   9145,   9146,   9147,   9148,   9148,   9149,   9150
    20,   9151,   9151,   9152,   9153,   9154,   9154,   9155,   9156,   9157,   9158
    30,   9159,   9159,   9160,   9161,   9162,   9163,   9164,   9165,   9166,   9166
    40,   9167,   9168,   9169,   9170,   9171,   9172,   9173,   9174,   9175,   9176

等等。我的计划是将第1列第2行,第1行第3列,第1行第1列放入一个数组中,然后对其余行执行相同操作并将其全部放入单个数组中。我正在尝试这段代码

import numpy as np

a = np.loadtxt("datafile.txt", float)
for i > 0:
    if a[:,i]:
        #t = a[:6, :]  #get first six rows
print t

但我似乎没有得到任何地方,只是很多错误。

    for i > 0:
          ^
SyntaxError: invalid syntax

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您应该了解for loops的工作原理。你需要某种集合的循环。

如果正确加载,Numpy将为您创建数组。您非常接近,但根据您的示例,我会将float更改为int,因为您的所有数据都显示为整数,并提供明确的,分隔符,如下所示:

a = np.loadtxt("datafile.txt", int, delimiter=",")

假设您成功阅读了a,您可以使用a.shape获取a的维度,如果您想要沿着该路线行进,则可以使用它来循环范围。 a.shape[0]返回行数,a.shape[1]返回列数:

for i in range(a.shape[1]):
    # this will loop over i from 0 to the column count in a
    print(a[0][i]) # print(a[0,i]) will also work but only on numpy array

如您所见,您可以使用i,ja[i][j]访问数组的元素a[i,j]。这将打印a第一行中的每个项目,但您可能不希望这样做。如果您的目标是打印a的前6行,则可以在没有循环的情况下执行此操作,如下所示:

print(a[:6])

答案 1 :(得分:0)

谢谢,bnjmn。

这对我有用:

a = np.loadtxt('datafile.txt', int, delimiter=',') # import data
y = np.reshape(a, np.size(a))
pos = np.delete(y, np.arange(0, y.size, 11))

plt.plot(pos)
plt.xlabel(sample)
plt.ylabel(position)

我得到: figure