私が行った場合
a = [1, 2, 7]
a - a[-1]
私は得るTypeError: unsupported operand type(s) for -: 'list' and 'int'
ただし、 で構成されたリストbがnp.float64あり、次のコードが機能します。
type(b)
# list
b - b[-1]
# array([ 281.04209146, 6.57013103, 0. ])
bこれは、 の数字がでありnp.float64、 にb多少キャストされているためだと思いますnp.array。その後、ブロードキャストが発生します。リスト内のすべての要素が同じ型である必要はないためb[0]、 string だったらどうなるでしょうか? のオペランド b - b[-1]は依然としてlistandだったはずなのに、np.float64なぜ がb - b[-1]発生しないのTypeErrorですか?
EDITlist :とnp.arrayは違うと答えた人がいます。まあ、私は知っています。しかし、ありbませんnp.array。のように動作listしていますが、コード スニペットで述べたように、その型はです。
の最小限の作業例を次に示しbます。
b
# [1598.717274996219, 1324.245314569733, 1317.6751835362861]
type(b[0])
# numpy.float64