【发布时间】:2020-11-20 15:49:20
【问题描述】:
我有形状为 (3,3,3) 的 ndarray 并列出了 3 个数字。
我想将第一个维度与列表中的第一个数字相除,第二个维度与第二个数字相除,第三个维度与第三个数字相除。
例子:
np.random.rand(3,3,3)
>>>array([[[0.90428811, 0.60637664, 0.45090308],
[0.17400851, 0.49163535, 0.62370288],
[0.58701608, 0.91207839, 0.69364496]],
[[0.85290321, 0.85170489, 0.48792597],
[0.02602198, 0.91088298, 0.14882673],
[0.63354821, 0.21764451, 0.30760075]],
[[0.64833375, 0.13583598, 0.50561519],
[0.42832468, 0.91146014, 0.41627495],
[0.71238947, 0.37868578, 0.05874898]]])
还有名单:
lst=[0.215, 0.561,0.724]
我希望输出结果是这样的结果:
[0.90428811/0.215, 0.60637664/0.215, 0.45090308/0.215],
[0.17400851/0.215, 0.49163535/0.215, 0.62370288/0.215],
[0.58701608/0.215, 0.91207839/0.215, 0.69364496/0.215]],
[[0.85290321/0.561, 0.85170489/0.561, 0.48792597/0.561],
[0.02602198/0.561, 0.91088298/0.561, 0.14882673/0.561],
[0.63354821/0.561, 0.21764451/0.561, 0.30760075/0.561]],
[[0.64833375/0.724, 0.13583598/0.724, 0.50561519/0.724],
[0.42832468/0.724, 0.91146014/0.724, 0.41627495/0.724],
[0.71238947/0.724, 0.37868578/0.724, 0.05874898/0.724]]])
我尝试过这样做(arr 是 ndarray):
nums=np.arange(3)
for n in nums:
arr[i]=arr[i]/lst[i]
但出现错误:
IndexError: 只有整数、切片 (
:)、省略号 (...)、 numpy.newaxis (None) 和整数或布尔数组是有效的索引
【问题讨论】:
-
你可以通过einsum来做到这一点
标签: python numpy numpy-ndarray