标签: genfromtxt

zip()是在numpy中将数组与内存相结合的最有效方法吗?

我使用numpy并有两个数组,可以读取genfromtxt.

它们的形状<10000,>根据np.shape().

我希望这两个向量与形状一起在数组中<10000,2>.现在我使用:

x = zip(x1,x2)
Run Code Online (Sandbox Code Playgroud)

但我不确定是否有numpy功能可以更好/更有效地做到这一点.我不认为连接符合我的想法(或者我做错了).

python arrays zip numpy genfromtxt

1
推荐指数
2
解决办法
4250
查看次数

numpy genfromtxt 读取 csv 的第一个值丢失?

我正在尝试使用 numpy 的 genfromtxt 将键长和能量的 csv 读取到数组中(用于生成势能表面和反应路径,所以我将使用 scipy.interpolate - 因此需要每个值...... )。

问题是 genfromtxt 将每个 csv 输入的第一个值读取为 NaN。我该如何解决?

例如,我在 dcm_oh_lengths.csv 中有以下数据:

1.0763,1.1263,1.1763,1.2263,1.2763,1.3263,1.3763,1.4263,1.4763,1.5263,1.5763
Run Code Online (Sandbox Code Playgroud)

我称之为

1.0763,1.1263,1.1763,1.2263,1.2763,1.3263,1.3763,1.4263,1.4763,1.5263,1.5763
Run Code Online (Sandbox Code Playgroud)

oh_all 返回

array([   nan, 1.1263, 1.1763, 1.2263, 1.2763, 1.3263, 1.3763, 1.4263,
       1.4763, 1.5263, 1.5763])
Run Code Online (Sandbox Code Playgroud)

因此第一个数据点被读取为缺失。如果我将数据更改为

,1.0763,1.1263,1.1763,1.2263,1.2763,1.3263,1.3763,1.4263,1.4763,1.5263,1.5763
Run Code Online (Sandbox Code Playgroud)

然后做同样的事情返回

array([   nan, 1.0763, 1.1263, 1.1763, 1.2263, 1.2763, 1.3263, 1.3763,
       1.4263, 1.4763, 1.5263, 1.5763])
Run Code Online (Sandbox Code Playgroud)

作为一个较长的示例,能量 (dcm_energies.csv) 的前几行是:

-7162979.201,-7163010.482,-7163033.634,-7163043.279,-7163060.113,-7163068.894,-7163076.255,-7163078.541,-7163080.908,-7163056.179,-7163081.743
-7163005.74,-7163031.808,-7163050.794,-7163056.603,-7163064.619,-7163070.65,-7163080.606,-7163080.682,-7163081.125,-7163052.444,-7163078.824
-7163024.746,-7163046.199,-7163061.278,-7163063.603,-7163068.336,-7163071.692,-7163079.11,-7163077.25,-7163075.861,-7163043.325,-7163070.561 (...)
Run Code Online (Sandbox Code Playgroud)

并通过 genfromtxt 调用它,如上所示:

array([[         nan, -7163010.482, -7163033.634, -7163043.279,
        -7163060.113, -7163068.894, -7163076.255, -7163078.541,
        -7163080.908, -7163056.179, -7163081.743],
       [-7163005.74 , -7163031.808, -7163050.794, -7163056.603, …
Run Code Online (Sandbox Code Playgroud)

python numpy genfromtxt

1
推荐指数
1
解决办法
3351
查看次数

使用:运算符索引numpy.void的numpy.ndarray(由numy.genfromtxt输出)

我使用numpy.genfromtxt这样生成数据:

ConvertToDate = lambda s:datetime.strptime(s,"%d/%m/%Y")
data= numpy.genfromtxt(open("PSECSkew.csv", "rb"), 
                        delimiter=',',
                        dtype=[('CalibrationDate', datetime),('Expiry', datetime), ('B0', float), ('B1', float), ('B2', float), ('ATMAdjustment', float)],
                        converters={0: ConvertToDate, 1: ConvertToDate})
Run Code Online (Sandbox Code Playgroud)

我现在想要提取最后4列(每行但在循环中,所以我们只考虑一行)来分离变量.所以我这样做:

    B0 = data[0][2]
    B1 = data[0][3]
    B2 = data[0][4]
    ATM = data[0][5]
Run Code Online (Sandbox Code Playgroud)

但是,如果我能做到这一点(例如我可以使用普通的2D ndarray)我会更喜欢它:

    B0, B1, B2, ATM = data[0][2:]
Run Code Online (Sandbox Code Playgroud)

但这给了我一个"无效索引"错误.有没有办法很好地做到这一点,还是应该坚持使用4线方法?

indexing numpy python-2.7 genfromtxt

0
推荐指数
1
解决办法
2356
查看次数

如何使用 python 将 CSV 文件转换为 RGB 图像

我正在尝试将 csv 文件转换为 RGB 文件,如下所示:

from PIL import Image, ImageDraw
from numpy import genfromtxt

g = open('myFile.csv','r')
temp = genfromtxt(g, delimiter = ',')
im = Image.fromarray(temp).convert('RGB')
pix = im.load()
rows, cols = im.size
for x in range(cols):
    for y in range(rows):
        print str(x) + " " + str(y)
        pix[x,y] = (int(temp[x,y] // 256 // 256 % 256),int(temp[x,y] // 256 % 256),int(temp[x,y] % 256))
im.save(g.name[0:-4] + '.jpeg')
Run Code Online (Sandbox Code Playgroud)

问题是倒数第二行给了我一个“IndexError:图像索引超出范围”。当我打印出 x 和 y 时,我发现只要它们中的任何一个达到 5(我的文件的宽度,而不是高度),就会发生这种情况,无论我如何使用它,无论 x 或 y 达到 5,它都会引发错误这就是我不明白的。也欢迎任何更好的实现。

python numpy python-imaging-library genfromtxt

0
推荐指数
1
解决办法
6034
查看次数

使用字符串和数字列读取txt文件

我有制表符分隔文件(city-data.txt):

Alabama Montgomery  32.361538   -86.279118
Alaska  Juneau  58.301935   -134.41974
Run Code Online (Sandbox Code Playgroud)

有可能以某种方式读取前两列作为字符串,最后两列作为浮点数?

我的输出应该如下所示:

[(Alabama,Montgomery,32.36,-86.28),
 (Alaska,Juneau,58.30,-134.42)]
Run Code Online (Sandbox Code Playgroud)

我试过了:

mylist2=np.genfromtxt(r'city-data.txt', delimiter='\t',  dtype=("<S15","
<S15", float, float)).tolist()
Run Code Online (Sandbox Code Playgroud)

这给了我字节类型的前两列:

[(b'Alabama', b'Montgomery', 32.361538, -86.279118),
 (b'Alaska', b'Juneau', 58.301935, -134.41974)]
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

with open('city-data.txt') as f:
mylist = [tuple(i.strip().split('\t')) for i in f]
Run Code Online (Sandbox Code Playgroud)

这给了我字符串类型的所有列:

[('Alabama', 'Montgomery', '32.361538', '-86.279118'),
 ('Alaska', 'Juneau', '58.301935', '-134.41974')]
Run Code Online (Sandbox Code Playgroud)

我无法想出如何实现我需要的东西......

python string format numpy genfromtxt

0
推荐指数
1
解决办法
763
查看次数