Jika Anda bertanya tentang numpy.logical_or, maka tidak, seperti yang dikatakan dokumen secara eksplisit, satu-satunya parameter adalah x1, x2, dan secara opsional out:
numpy.logical_or( x1, x2[, out]) =<ufunc 'logical_or'>
Anda tentu saja dapat menyatukan beberapa logical_orpanggilan seperti ini:
>>> x = np.array([True, True, False, False])
>>> y = np.array([True, False, True, False])
>>> z = np.array([False, False, False, False])
>>> np.logical_or(np.logical_or(x, y), z)
array([ True, True, True, False], dtype=bool)
Cara untuk menggeneralisasi rangkaian jenis ini di NumPy adalah dengan reduce:
>>> np.logical_or.reduce((x, y, z))
array([ True, True, True, False], dtype=bool)
Dan tentu saja ini juga akan berfungsi jika Anda memiliki satu larik multi-dimensi, bukan larik terpisah — faktanya, begitulah maksud penggunaannya:
>>> xyz = np.array((x, y, z))
>>> xyz
array([[ True, True, False, False],
[ True, False, True, False],
[False, False, False, False]], dtype=bool)
>>> np.logical_or.reduce(xyz)
array([ True, True, True, False], dtype=bool)
Tapi tuple dari tiga array 1D yang sama panjangnya adalah array_like dalam istilah NumPy, dan dapat digunakan sebagai array 2D.
Di luar NumPy, Anda juga dapat menggunakan Python reduce:
>>> functools.reduce(np.logical_or, (x, y, z))
array([ True, True, True, False], dtype=bool)
Namun, tidak seperti NumPy reduce, Python tidak sering dibutuhkan. Untuk kebanyakan kasus, ada cara yang lebih sederhana untuk melakukan sesuatu — misalnya, untuk menyatukan beberapa oroperator Python , jangan reduceselesai operator.or_, cukup gunakan any. Dan ketika ada tidak , itu biasanya lebih mudah dibaca menggunakan loop eksplisit.
Dan nyatanya NumPy's anybisa digunakan untuk kasus ini juga, meski tidak sepele; jika Anda tidak secara eksplisit memberikan sumbu, Anda akan berakhir dengan skalar, bukan array. Begitu:
>>> np.any((x, y, z), axis=0)
array([ True, True, True, False], dtype=bool)
As you might expect, logical_and is similar—you can chain it, np.reduce it, functools.reduce it, or substitute all with an explicit axis.
What about other operations, like logical_xor? Again, same deal… except that in this case there is no all/any-type function that applies. (What would you call it? odd?)
any()?