【问题标题】:Changing the numpy array into required shape将 numpy 数组更改为所需的形状
【发布时间】:2014-08-23 06:07:55
【问题描述】:

我有 480 行和 1440 列的 2d numpy 数组,由下面的“数据”命名:

The first element belongs to (49.875S,179.875W),
the second element belongs to (49.625S,179.625W),
and the last element belongs to (49.875N,179.875E).

import os, glob, gdal, numpy as np

fname = '3B42RT.2014010606.7.bin'

with open(fname, 'rb') as fi:
    fi.seek(2880,0)
    data = np.fromfile(fi,dtype=np.uint16,count=480*1440)
    data = data.byteswap()
    data = data.reshape(1440,480)

如何转换这个 numpy 数组,使其第一个元素属于 (49.875N,179.625W),即分别属于左上纬度和经度;最后一个元素属于(49.625S,179.875E),即右下纬度和经度。

我尝试旋转它,但我认为它不正确。

 data = np.rot90(data,1)

你们中的一些人遇到过此类问题吗? 我使用的二进制文件在这里:ftp://trmmopen.gsfc.nasa.gov/pub/merged/3B42RT/3B42RT.2014010606.7.bin.gz

【问题讨论】:

  • “属于”是什么意思?
  • 第一个元素对应(49.875S,179.875W)。是栅格数据,所以第一个元素的坐标是(49.875S,179.875W)
  • 目前还不清楚这应该是什么意思。您是否应该将最初对应的元素(49.875N,179.625W)放在第一个位置?或者您是否应该以某种方式转换元素以使其代表(49.875N,179.625W)? (49.875N,179.625W) 的原始元素在数组中的哪个位置?二维数组的第二个元素到底是什么?
  • 我想变换元素,使变换后的数组匹配所需的坐标。
  • @Drakos:根本不清楚您的数据如何对应于任何类型的地理。你能比给出三个坐标更明确吗?您的行和列是否对应于纬度和经度线(反之亦然)?您在数据中引用的“第二个”元素在哪里(是data[0,1],还是其他)?

标签: python numpy gis


【解决方案1】:

好的,如果这真的只是重新排序元素的问题,那么您可能正在寻找这样的东西:

from itertools import chain

Lat = [[11, 12, 13, 14, 15, 16],
       [21, 22, 23, 24, 25, 26],
       [31, 32, 33, 34, 35, 36]]

Lon = [[111, 112, 113, 114, 115, 116],
       [121, 122, 123, 124, 125, 126],
       [131, 132, 133, 134, 135, 136]]

print zip(chain.from_iterable(Lat), chain.from_iterable(Lon))

但是您的问题确实令人困惑。在 stackoverflow 上提问时,请尝试将其分解为一些最小示例,跳过所有与问题无关的内容。

【讨论】:

    猜你喜欢
    • 2020-06-22
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    相关资源
    最近更新 更多