Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将Numpy数组与新网格、过滤器和缩放对齐

将Numpy数组与新网格、过滤器和缩放对齐
EN

Stack Overflow用户
提问于 2014-05-08 19:59:24
回答 1查看 249关注 0票数 1

我有一个值数组,比如(7,5),我想把它映射到一个形状数组(7,6)。数据都是等间距的,因此,例如,我们有

代码语言:javascript
运行
AI代码解释
复制
. u . u . u . u . u .
. u . u . u . u . u .
. u . u . u . u . u .
. u . u . u . u . u .
. u . u . u . u . u .
. u . u . u . u . u .
. u . u . u . u . u .

其中‘u’是当前数据,点是我想要对其进行采样的位置。

代码语言:javascript
运行
AI代码解释
复制
   3.0    4.0    3.0    2.0    2.0
   2.0    3.0    3.0    2.0    3.0
   2.0    3.0    3.0    2.0    2.0
   etc.

我希望它以7x6数组结束,如下所示

代码语言:javascript
运行
AI代码解释
复制
3.0    3.5    3.5    2.5    2.0    2.0
2.0    2.5    3.0    2.5    2.5    3.0
2.0    2.5    3.0    2.5    2.0    2.0
etc.

所以点是我想要采样数据的经纬点,‘u’是我拥有数据的点,它们位于每一行中每个经纬点的中间。

现在,我使用ndimage.generic_filter对数据进行1x2过滤,取同一行中相邻的两个‘u’的平均值,然后从原始数组中切出最右边的一列,并使用scipy.hstack将其添加到generic_filter生成的数组的一侧,我觉得有更好的方法可以做到这一点。

此外,这些数组具有用9.99999993e+36填充没有数据的点。在我的generic_filter中,我将所有大于10^3的值都替换为NaNs,但这会导致下一步出现问题。

在将数据对齐到新的网格之后,我想对其进行重新采样,以便它由更少的点组成,在更多的空间中平均。我只是使用数组切片来获取每个第n个元素,但这似乎丢失了数据,所以我尝试使用ndimage.interpolation.zoom(),但它只是用NaNs填充数组。

我可以使用0而不是NaNs,但是我正在制作一个矢量图,并且使用zeros basemap/matplotlib的quiver()函数在所有的零矢量上放置一个点。对于NaNs,它不会尝试绘制这些点,这正是我想要的。我可以用零填充,缩放,然后返回并将零翻转为NaNs,当我这样做时,它不会将零保留为零,它会用非常小的值填充它们。在这种情况下,没有数据的点是陆上的,所以没有洋流,我希望它们保持为零或NaN。

我应该注意的是,我有另一个可能是(6,6)形状的数组,它是向量的v分量,我希望它的形状是(7,6)。它的结构与u数组相同,只是数据所在的点在列中,而不是行中,例如

代码语言:javascript
运行
AI代码解释
复制
 .  .  .  .  .  .
 v  v  v  v  v  v
 .  .  .  .  .  .
 v  v  v  v  v  v
 .  .  .  .  .  .
 v  v  v  v  v  v
 .  .  .  .  .  .
 v  v  v  v  v  v
 .  .  .  .  .  .
 v  v  v  v  v  v
 .  .  .  .  .  .
 v  v  v  v  v  v
 .  .  .  .  .  .

实际上,这些数组要大得多,并且这些点都是等间距的。

EN

回答 1

Stack Overflow用户

发布于 2014-05-09 02:01:18

您可以尝试interpolate,但在其他地方可能有更好的选择:

代码语言:javascript
运行
AI代码解释
复制
>>> from scipy.interpolate import interp1d
>>> arr
array([[ 3.,  4.,  3.,  2.,  2.],
       [ 2.,  3.,  3.,  2.,  3.],
       [ 2.,  3.,  3.,  2.,  2.]])
>>> func = interp1d(np.linspace(0, 1, arr.shape[1]), arr)

>>> func(np.linspace(0, 1, arr.shape[1]+1))
array([[ 3. ,  3.8,  3.4,  2.6,  2. ,  2. ],
       [ 2. ,  2.8,  3. ,  2.6,  2.2,  3. ],
       [ 2. ,  2.8,  3. ,  2.6,  2. ,  2. ]])

这很容易扩展到更大的形状。

代码语言:javascript
运行
AI代码解释
复制
>>> func(np.linspace(0, 1, arr.shape[1]+4))
array([[ 3. ,  3.5,  4. ,  3.5,  3. ,  2.5,  2. ,  2. ,  2. ],
       [ 2. ,  2.5,  3. ,  3. ,  3. ,  2.5,  2. ,  2.5,  3. ],
       [ 2. ,  2.5,  3. ,  3. ,  3. ,  2.5,  2. ,  2. ,  2. ]])

有许多插值类型可以尝试样条、线性(如上所示的默认值)、二次插值等。可以使用intrepidaxis参数在第一维上进行插值。对于2-D情况,您可以再次使用interpolate:interp2d

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23551394

复制
相关文章
Java中对map按key或val排序
Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式:
sunonzj
2022/06/21
1.6K0
int a; int* a; int** a; int (*a)[]; int (*a)(int)
a) int a;表示一个内存空间,这个空间用来存放一个整数(int); b) int* a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间; c) int** a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。也简单的说,指向了一个b)中提到的空间; d) int (*a)[4];表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个长度为4、类型为int的数组;和int** a的区别在于,++、+=1之后的结果不一样,其他用法基本相同。 以上四种类型见上图表示。 e) int (*a)(int);表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个函数,这个函数有一个类型为int的参数,并且函数的返回类型也是int。
Twcat_tree
2022/11/30
2.3K0
int a; int* a; int** a; int (*a)[]; int (*a)(int)
lombok的val
今天遇到一个情况,我们知道把java代码粘贴到kt文件里,idea会自动转换java为kt
阿超
2023/02/22
9630
lombok的val
listnode.val java(string indexof方法)
有一列 1.给出 Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) 要求 Output: 7 -> 0 -> 8
全栈程序员站长
2022/08/01
6450
Train / Val / Test划分
合理的Train/Test集划分会有效地减少under-fitting和over-fitting现象
mathor
2020/01/15
2.2K0
VBA专题:Val函数
Val函数返回作为参数传递的字符串中的前导数字,它在无法识别为数字部分的第一个字符处停止读取字符串,但它不会在空格处停止。
fanjy
2022/11/16
1.5K0
jquery的html,text,val
.html()用为读取和修改元素的HTML标签 .text()用来读取或修改元素的纯文本内容 .val()用来读取或修改表单元素的value值。 这三个方法功能上的对比 .html(),.text(),.val()三种方法都是用来读取选定元素的内容;只不过.html()是用来读取元素的HTML内容(包括其Html标签),.text()用来读取元素的纯文本内容,包括其后代元素,.val()是用来读取表单元素的"value"值。其中.和.text()方法不能使用在表单元素上,而.val()只能使用在表单元素上;
marsggbo
2018/01/23
2K0
jquery的html,text,val
    1.html()用为读取和修改元素的HTML标签     2.text()用来读取或修改元素的纯文本内容     3.val()用来读取或修改表单元素的value值。
ydymz
2018/09/10
1.6K0
int(*p)[4] int*p[4]
1、int(*p)[4];------p为指向含4个元素的一维整形数组的指针变量(是指针) #include <stdio.h> #include <stdlib.h> int main() { int a[4]={1,2,3,4}; int (*p)[4]; p=&a; printf("%d\n",(*p)[3]); printf("%d\n",*p); return 0; } 2、int *p[4];-------定义指针数组p,它由4个指向整型数据的
谙忆
2021/01/19
2K0
java中string转换为int(int char)
// String change int public static void main(String[] args) { String str = “123”; int n; // first method // n = Integer.parseInt(str); n = 0; n = Integer.parseInt(str); System.out.println(“Integer.parseInt(str):”+ n); System.out.println(“\n”); //second method //n = Integer.valueOf(str).intValue();
全栈程序员站长
2022/07/28
1.9K0
java中string转换为int(int char)
JAVA将string转化为int(int怎么转string)
1). int i = Integer.parseInt([String]); 或
全栈程序员站长
2022/07/28
3K0
C# int int16 Int32 Int64的介绍[通俗易懂]
今天看到别人的代码中用到Int32,UInt32相关,想到自己平时用的都是int类型整数,就心生好奇的翻了一下资料:
全栈程序员站长
2022/09/21
3.6K0
.net Int16 、(int Int32)、 Int64 的区别
摘要: 关于什么是16位整数,32位整数,64位整数,请看这里:http://www.cnblogs.com/EasonJim/p/4837061.html Int16 值类型表示值介于 -32768 到 +32767 之间的有符号整数。
拓荒者
2019/03/14
2.7K0
int是什么_int a[4][4]
Int16 意思是16位整数(16bit integer),相当于short 占2个字节 -32768 ~ 32767
全栈程序员站长
2022/09/21
1.4K0
聊聊kotlin的val跟var
val:英文读value,代表是immutable, 只读的意思 比如下面这个kotlin代码
韦东锏
2021/09/29
1.2K0
聊聊kotlin的val跟var
2022-05-26:void add(int L, int R, int C)代表在arr[L...R]上每个数加C, int get(int L, int
2022-05-26:void add(int L, int R, int C)代表在arrL...R上每个数加C,
福大大架构师每日一题
2022/05/26
1.5K0
2022-05-26:void add(int L, int R, int C)代表在arr[L...R]上每个数加C, int get(int L, int
#define a int[10]与 typedef int a[10]用法
// #define a int[10] #include <stdio.h> #include <stdlib.h> #define a int[10] int main() { int *p=(int *)malloc(sizeof(a)); p[0]=1; printf("%d\n",p[0]); return 0; } // typedef int a[10]; #include <stdio.h> typedef int a[10]; int m
Daotin
2018/08/31
1.6K0
Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)[转]include <stdio.h>int func(int a, int b, int c, int d, int e,
声明:本文转自Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码),此文干货很多。
用户2930595
2018/08/23
4.2K0
Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)[转]include <stdio.h>int func(int a, int b, int c, int d, int e,
JAVA 枚举 String-int
/** * @author 姜兴琪 */ package cn.bycs.online.dealer.vo; /** * @author jiangxingqi * 车辆状态枚举 */ public enum NewCarStatusEnum { DRAFT("草稿",1), SUBMIT_RELEASE("提交发布",2), PUBLISH_SUCCESS("发布成功",3), AUDIT_DENY("审核不通过",4); private St
week
2018/08/27
3440
点击加载更多

相似问题

基本Regex需要帮助

15

需要Python Regex帮助(基本)

42

需要C语言的基本帮助

26

需要帮助来完成连接

10

需要帮助理解基本递归问题

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档