python - 如何在 numpy 数组中的 XYZ 位置插入 csv 文件中的浮点值

标签 python csv numpy

我需要将 CSV 文件中 XYZ(int) 处的值(Float)插入到 world = numpy.zeros((360,360,360))

CSV 文件中的行示例:

Value   X   Y   Z
4.5396  159 159 1
4.5905  182 160 3
etc

我的 CSV 文件中有大约 16000 行,尽管很多都是重复的。

我的主要问题是我需要使用 Integers(XYZ) 将 Float(Value) 插入 Numpy,它拒绝同时处理两者,我也尝试过使用 Pandas 但同样的问题。

在这里,我已将其全部转换为整数,这是我使其正常工作的唯一方法。

world = numpy.zeros((360,360,360))
data = numpy.genfromtxt('Myfile.csv', delimiter=',',skip_header=1) 
for Value,X, Y, Z in data.astype(int):
         world[X, Y, Z] = Value

它应该看起来像这样

world[159,159,1] = 4.5369
world[182,160,3] = 4.5945 

但我只能得到这个

world[159,159,1] = 4
world[182,160,3] = 4

其他一切都会导致各种错误

最佳答案

这样做:

world = numpy.zeros((360,360,360))
data = numpy.genfromtxt('Myfile.csv', delimiter=',', skip_header=1) 
X, Y, Z = data[:, 1:].astype(int).T
world[X, Y, Z] = data[:, 0]

或者直接使用正确的类型读取文本数据:

world = numpy.zeros((360,360,360))
data = numpy.genfromtxt('Myfile.csv', delimiter=',', skip_header=1,
                        dtype=[('Value', float), ('X', int), ('Y', int), ('Z', int)]) 
world[data['X'], data['Y'], data['Z']] = data['Value']

关于python - 如何在 numpy 数组中的 XYZ 位置插入 csv 文件中的浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55853700/

相关文章:

python - 如何延迟生成和处理生成器的结果组合?

python - 在 flask 中将值从一条路线传播到另一条路线

python - 如何找到在 Graphlab SFrame 中保存时引发错误的特定行?

csv - 使用 awk 切换 csv 文件的列

python - 与 numpy repeat 一起使用的两个数组的逐元素编织

python - 压缩音频数据的快速方法?

python - 如何从tensorflow fully_connected获取权重

database - 将 CSV 文件加载到数据库表 Wordpress

python - 替换numpy中的子数组

numpy - fft 在短时间历史中找到低频