python重新排列数组_如何重塑/重新排列这个numpy数组列表

该博客讨论了如何将包含多个(2,n)形状numpy数组的列表转换为所需输出。作者提供了一个示例,其中points列表包含了points1、points2和points3三个数组,并希望将它们重塑为新的_points列表,使得新的列表中每个元素是原数组对应位置的元素组合。博客寻求一个简短且可能使用高级numpy索引操作的解决方案,同时也考虑了可能需要使用循环的情况。
摘要由CSDN通过智能技术生成

问题:

如何将以下numpy数组的列表重塑/转换为所需的输出?我很想知道它是如何工作的,所以一个循序渐进的指南将非常感谢,因为我将不得不与混合工作数字阵列/列出案例。在

最小示例import numpy as np

# create some dummy data

points1 = np.array([[1, 2, 3],[101, 102, 103]])

points2 = np.array([[4, 5, 6, 7, 8],[104, 105, 106, 107, 108]])

points3 = np.array([[9, 10, 11, 12],[109, 110, 111, 112]])

# gather data / this kind of list is what I will have to work with

points = [points1, points2, points3]

# what it looks like now

print(points)

# do some fance reshape/rearrange stuff

# new_points = ???

# desired output:

# new_points[0] = [1, 101]

# new_points[1] = [2, 102]

# new_points[2] = [3, 103]

# ...

# new_points[11] = [12, 112]

我只能访问点(而不是points1等),它将是一个numpy数组的列表,这些数组都是成形的(2,n)。

有没有什么简短的,花哨的索引操作,或者我必须使用一个循环?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用numpy的interpolate模块来实现自定义规则的插值。 首先,需要定义一个规则函数,该函数接收一个一维数组作为参数,并返回该数组对应的一维插值结果。例如,以下是一个简单的规则函数,将数组中的每个值都乘以2: ```python def my_rule(arr): return arr * 2 ``` 然后,可以使用interpolate模块中的interp1d函数创建一个插值函数对象。该函数接收两个参数:原始数据点的x和y值,以及一个可选的规则函数。例如,以下代码创建了一个插值函数对象,并将my_rule函数作为规则函数传递给它: ```python import numpy as np from scipy import interpolate x = np.array([0, 1, 2, 3, 4, 5]) y = np.array([1, 2, 3, 4, 5, 6]) interp_func = interpolate.interp1d(x, y, kind='linear', fill_value='extrapolate', bounds_error=False, assume_sorted=True, copy=False, vectorize=True) interp_func.rules = [my_rule] ``` 以上代码中,interp1d函数的kind参数指定了插值方法,fill_value参数指定了插值方法的边界处理方式,bounds_error参数指定了是否在越界时抛出异常,assume_sorted参数指定了输入数组是否已按升序排列,copy参数指定了是否在插值函数中复制输入数组。 最后,可以使用插值函数对象对新的x值进行插值。例如,以下代码对新的x值进行插值,并使用print函数输出插值结果: ```python new_x = np.array([0.5, 1.5, 2.5, 3.5, 4.5]) new_y = interp_func(new_x) print(new_y) ``` 以上代码中,interp_func(new_x)返回一个新的数组,其中包含新的x值对应的插值结果。 需要注意的是,规则函数和interp1d函数中的一些参数可能需要根据实际情况进行调整,以获得最佳的插值效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值