【问题标题】:numpy python code arraynumpy python代码数组
【发布时间】:2018-07-09 12:44:21
【问题描述】:
Array_temp = array_1 tarray_1

print(Array_temp)
[list([1.0, 3.0, 7.0, 1.0, 3.0, 7.0]) list( [2.0, 4.0, 6.0, 8.0, 2.0, 4.0, 6.0, 8.0])]

Array_sub = array_1 array_1

print(Array_mul)
TypeError
Traceback (most recent call last) <i python-input-11-c5dc21502aaf> in <module() --> 1 Array_sub = 

array_1-array_1

2 print (Array_mul)
TypeError: unsupported operand type(s) for -: 'list' and 'list'

array_di = array_1 *array_1

print (array_di)
TypeError
Traceback (most recent call last) <i python-input-13-09997f8001 f6> in <module () -->1 array_di = array_1*array_1

2 print (array_di)
TypeError: can't multiply sequence by non-int of type 'list'

数组相加成功,但数组相减或相乘失败 告诉我我的代码出了什么问题

【问题讨论】:

  • 欢迎来到 SO。请提供 minimal reproducible example
  • 您需要描述您期望代码做什么以及它实际在做什么,最好使用示例。
  • 那些不是数组。它们是列表。列表可以加入、+ 或复制,*5,仅限,

标签: python arrays numpy


【解决方案1】:

我认为这复制了您正在尝试做的事情:

In [70]: arr = np.array([list([1.0, 3.0, 7.0, 1.0, 3.0, 7.0]), list( [2.0, 4.0, 
    ...: 6.0, 8.0, 2.0, 4.0, 6.0, 8.0])])
In [71]: 
In [71]: arr
Out[71]: 
array([list([1.0, 3.0, 7.0, 1.0, 3.0, 7.0]),
       list([2.0, 4.0, 6.0, 8.0, 2.0, 4.0, 6.0, 8.0])], dtype=object)
In [72]: arr-arr
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-72-c5b907903880> in <module>()
----> 1 arr-arr

TypeError: unsupported operand type(s) for -: 'list' and 'list'
In [73]: arr*arr
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-73-4ca35a17b454> in <module>()
----> 1 arr*arr

TypeError: can't multiply sequence by non-int of type 'list'

您从一个包含 2 个不同大小的列表的数组开始。因此,数组是object dtype,形状为 (2,)。

arr-arr 将操作委托给arr 的元素,然后抱怨没有为列表定义减法。

添加是为列表定义的 - 它只是列表连接

In [74]: arr+arr
Out[74]: 
array([list([1.0, 3.0, 7.0, 1.0, 3.0, 7.0, 1.0, 3.0, 7.0, 1.0, 3.0, 7.0]),
       list([2.0, 4.0, 6.0, 8.0, 2.0, 4.0, 6.0, 8.0, 2.0, 4.0, 6.0, 8.0, 2.0, 4.0, 6.0, 8.0])],
      dtype=object)

list*list 也没有定义。但是arr*2 产生的结果与Out[74] 相同。

如果列表大小相同,则我们得到一个二维数组,并且定义了这个数学:

In [76]: arr = np.array([list([1.0, 3.0, 7.0, 1.0, 3.0, 7.0]), list( [2.0, 4.0, 
    ...: 6.0, 8.0, 2.0, 4.0])])
In [77]: arr
Out[77]: 
array([[1., 3., 7., 1., 3., 7.],
       [2., 4., 6., 8., 2., 4.]])
In [78]: arr-arr
Out[78]: 
array([[0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0.]])
In [79]: arr*arr
Out[79]: 
array([[ 1.,  9., 49.,  1.,  9., 49.],
       [ 4., 16., 36., 64.,  4., 16.]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2011-12-28
    • 2014-06-24
    • 1970-01-01
    • 2018-09-26
    • 2021-08-06
    • 2021-06-24
    相关资源
    最近更新 更多