【问题标题】:Append array and a scalar value to a numpy array将数组和标量值附加到 numpy 数组
【发布时间】:2021-03-05 17:43:52
【问题描述】:

我正在尝试将一个 numpy 数组和一个标量值附加到一个 numpy 数组。

logf= np.array([20, 25, 31.5, 40, 50, 63, 80, 100, 125, 160])
logf = np.append(logf, [[logf*10], [logf*100]])
logf = np.append(logf, 20000)

为了附加一个标量值,我使用第二个附加函数来附加它。我想知道是否可以使用单个附加函数附加一个数组和一个标量值。

谢谢!

【问题讨论】:

  • 你期望的结果是什么?
  • array([ 20. , 25. , 31.5, 40. , 50. , 63. , 80. , 100. , 125. , 160. , 200. , 250. , 315. , 400 . , 500. , 630. , 800. , 1000. , 1250. , 1600. , 2000. , 2500. , 3150. , 4000. , 5000. , 6300. , 8000. , 10000. , 0., 0., 0., 16 20000.])
  • 这不是 append 所做的。您实际上想要扩展 数组。使用 numpy,您可以使用 np.concatenate
  • np.appendnp.concatenate 的一个构思不佳的封面 - 它需要 2 个数组,而 concatenate 需要整个列表。阅读它的文档,然后忘记:)

标签: python numpy append


【解决方案1】:

您可能正在寻找.concatenate()

import numpy as np

logf = np.array([20, 25, 31.5, 40, 50, 63, 80, 100, 125, 160])
logf = np.concatenate((logf, logf * 10, logf * 100, [20000]))
print(logf)

结果:

[   20.     25.     31.5    40.     50.     63.     80.    100.    125.
   160.    200.    250.    315.    400.    500.    630.    800.   1000.
  1250.   1600.   2000.   2500.   3150.   4000.   5000.   6300.   8000.
 10000.  12500.  16000.  20000. ]

numpy.concatenate() 需要一系列相同维度的输入数组,因此您不能只传递像 20000 这样的标量值 - 相反,您可以将其包裹在括号中,使其成为一维数组,例如其余的表达式。另请注意,logf * 100 是一个已经生成一维数组的表达式,因此不需要额外的括号。

【讨论】:

    猜你喜欢
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2017-05-09
    • 2021-10-12
    相关资源
    最近更新 更多