python输入数字成数组_python-以1024为一组在numpy数组中填写数字

您可以使用broadcasting–

(A[:,None] + np.arange(1024)).ravel()

样品运行-

# Input array

In [433]: A = np.array([512,2560,3584,5632])

# Add ranged numbers in a broadcasted way for elementwise addition

In [434]: A[:,None] + np.arange(1024)

Out[434]:

array([[ 512, 513, 514, ..., 1533, 1534, 1535],

[2560, 2561, 2562, ..., 3581, 3582, 3583],

[3584, 3585, 3586, ..., 4605, 4606, 4607],

[5632, 5633, 5634, ..., 6653, 6654, 6655]])

# Finally flatten those for final output

In [435]: (A[:,None] + np.arange(1024)).ravel()

Out[435]: array([ 512, 513, 514, ..., 6653, 6654, 6655])

np.add.outer(A,range(1024)).ravel()

等效的MATLAB版本:

作为参考,使用bsxfun等效广播的MATLAB版本并请牢记列的主要顺序,它们看起来很相似-

>> A = [512,2560,3584,5632];

>> sums = bsxfun(@plus, A, [0:1023].');

>> [sums(1:3,1) ; sums(end-2:end,1)].'

ans =

512 513 514 1533 1534 1535

>> [sums(1:3,2) ; sums(end-2:end,2)].'

ans =

2560 2561 2562 3581 3582 3583

>> [sums(1:3,3) ; sums(end-2:end,3)].'

ans =

3584 3585 3586 4605 4606 4607

>> [sums(1:3,4) ; sums(end-2:end,4)].'

ans =

5632 5633 5634 6653 6654 6655

>> out = reshape(sums,1,[]);

>> [out(1:3) out(end-2:end)]

ans =

512 513 514 6653 6654 6655

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值