python - 根据默认大小重塑 np.array
问题描述
有 2 个 np.arrays ,我想np.array1
从 shape(12,)
参考array2
with shape重塑(4,)
:
array1 = np.array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
并
array1.shape
返回:(12,)
array2 = np.array([ 12, 34, 56, 78])
并
array2.shape
返回:(4,)
我试图执行reshape
:
array1.reshape(array2.shape)
但是,有一个错误:
ValueError: cannot reshape array of size 12 into shape (4,)
因此,预期结果是array1
4 个元素:
np.array([ 1, 2, 3, 4])
,而不是 12。
我很感激任何想法和帮助。
解决方案
如果我正确理解您的要求,我认为您正在寻找的是简单的切片:
In [140]: array2 = np.array([ 12, 34, 56, 78])
In [135]: a_sliced = array1[:array2.shape[0]]
In [136]: a_sliced.shape
Out[136]: (4,)
如果array2
是多维的,则使用Mad Physicist 建议的方法:
sliced_arr = array1[tuple(slice(0, d) for d in array2.shape)]
或者,如果您打算将数组分成三个相等的两半,则使用numpy.split()
如下:
# split `array1` into 3 portions
In [138]: np.split(array1, 3)
Out[138]: [array([1, 2, 3, 4]), array([5, 6, 7, 8]), array([ 9, 10, 11, 12])]
推荐阅读
- apache-kafka - 当生产者数量多于分区时,Kafka 默认分区器行为
- java - Java:参数化类级别注释控制类成员注释
- reactjs - 使用 Bootstrap Form.Control 创建多选
- c# - C# - 检测 Excel 文件是否在 Sharepoint 中打开
- ios - 如何从 Node.js 服务器创建 voip 推送通知
- android - 为什么人们建议将我的文本放在字符串中?
- flutter - Flutter:如何按日期时间排序列表
- java - 如何按字母排序城市名称,而不是列表中的车牌代码?
- postgresql - brew install postgresql 后找不到 init db 错误和 postgresql
- excel - 将较长的 excel 范围复制到 Outlook 电子邮件正文作为图片